[[PHP]] *ZendFramework [#u480147e] -PHP5.1.4以上 **インストール [#f8ea3e94] -解凍してそのまま、アップする -ライブラリをインクルードパスに加える(例:/usr/local/ZendFramework) -※ドキュメントディレクトリより、上位の階層へ配置する include_path = ".:/usr/local/ZendFramework/library" -ディレクトリ構成 【application】 +--【controllers】 | ■IndexController.php | ■ErrorController.php +--【models】 +--【views】 +--【scripts】 ■index.phtml 【public_html】 ■.htaccess ■index.php ***.htaccess/URLをrewriteルールで書き換えて、index.phpを呼び出す [#b4fbcd86] RewriteEngine on ; トップページを指定します。 RewriteBase / RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php -WINなサーバで、.htaccessが使用できない場合、httpd.confへ追記+mod_rewriteモジュールを有効にした ***Ubuntuでrewriteエンジンを有効に(enableへシンボリックリンク) [#xda5bb49] ln -s /etc/apache2/mod_avaliable/rewrite.load /etc/apache2/enable/ **アクションの呼び出し方法 [#l1fd5c3f] http://FQDN/コントローラ名/アクション名/パラメータ1/値1/パラメータ2/値2 **コントローラ [#u6af599e] -ファイル名:(コントローラ名)Conroller.php で、クラス名:(コントローラ名)Controller -(アクション名)Action -「Controller」・「Action」は、固定 ***IndexController.php/デフォルトコントローラ [#i7392bda] <?php require_once 'Zend/Controller/Action.php'; class IndexController extends Zend_Controller_Action { public function indexAction() { // デフォルトアクション } // 存在しないアクションが指定された場合、デフォルトアクションへリダイレクト public function __call($method, $args) { if ('Action' == substr($method, -6)) { $controller = $this->getRequest()->getControllerName(); $url = '/' . $controller . '/idnex'; return $this->_redirect($url); } } } (('Action'に修正)) (('Actin'→'Action'に修正)) ***index.php/フロントコントローラ [#r5ab55c9] <?php require_once 'Zend/Controller/Front.php'; Zend_Controller_Front::getInstance()->setParam('noViewRenderer', true); Zend_Controller_Front::run('../application/controllers'); ***ErrorController.php/エラーコントローラ [#o773306c] -存在しないコントローラへのアクセスに使用される。controllersフォルダへ作成 require_once 'Zend/Controller/Action.php'; class ErrorController extends Zend_controller_Action { public function errorActin() { // エラーメッセージ $response = $this->getResponse(); $resposen->setBody('コントローラが見つかりません'); } } ***コントローラチェーン [#udce840e] -別アクション(fugaコントローラのhogeアクション)へ転送 -同一コントローラの場合、コントローラは省略可能 $this->_forward('hoge', 'fuga'); -現在のアクション処理が終了後に移る。即転送する場合は、returnで抜けること return $this->_forward('hoge', 'fuga'); **リクエストオブジェクト [#cf053d5a] |メソッド|取得する値| |getQuery()|QUERYSTRING| |getPost()|POST| |getCookie()|Cookie| |getServer()|SERVER| |getEnv()|ENV| |_getParam()|GET & POST| |_hasParam()|パラメータ存在| **レスポンスオブジェクト [#m2ccb561] -echo/printは原則禁止 |メソッド|内容| |setHeader()|HTTPヘッダを設定| |setBody|コンテンツを設定| |appendBody|コンテンツを追加| |sendHeaders|ヘッダを出力| |outputBody|コンテンツを出力| |sendResponse|ヘッダとコンテンツを出力| |clearHeaders|ヘッダ情報を消去| |clearBody|コンテンツを消去| |setRedirect|リダイレクトを設定する| **Zend_View/ビュー [#g6cf2b33] -PHPのプログラムにHTMLを含める -..application/views/sampleview.php <html> <body> <?php foreach ($this->person as $value): ?> <span><?php echo $this->escape($value['namae']); ?></span><br/> <?php endforeach ?> </body> </html> -コントローラでレンダリングする requre_once 'Zend/View.php'; public function IndexAction() { $data = array( array( 'namae' => '名前A' ), array( 'namae' => '名前B' ), array( 'namae' => '名前C' ) ); $view = new Zend_View(); $view->setScriptPath('../application/views'); $view->person = $data; echo $view->render('sampleview.php') } **その他 [#obe5c035] ***コンポーネント [#pc4fa7f5] -Zend_DB(データベース) -Zend_Auth(認証) -Zend_Acl(アクセス制御) -Zend_Config(設定) -Zend_Debug(デバッグ情報を表示。インスタンスは生成しない) -Zend_Log(1.インスタンス生成、2.ライター作成、3.メッセージ出力) -Zend_Exception(例外) **推奨コーディング規約 [#z826fb66] ***書式 [#m4ad80c5] -文字コード:UTF-8 BOMなし -改行コード:LFのみ -開始と終了:<?php 〜 終了タグなし -インデント:半角スペース4文字、タブは使用しない、全体をインデントしない ***命名規則 [#rfd1ec34] -ファイル名 --英数字+(アンダースコア) --プログラムファイルをグループ化する場合、同一名称+語尾装飾 -変数 --英数字 --(アンダースコア)は使用しない --クラス内private、protectedは、頭に(アンダースコア) --camelCase -定数 --大文字で --単語間には(アンダースコア) -クラス --先頭は大文字で ***コーディングスタイル [#q783d4d7] -変数間には、半角スペース -文字列 --シングルクォートで囲む --文字列が開業を含む場合、開業のみダブルクォート囲み、ピリオドで連結する --文字列を連結する場合は、2行目以降に変数名を記述せず、ピリオドで連結する -条件分岐、for、while --開始の中カッコ({)は、条件文と同一の行で閉じカッコは(})改行して記述する -SQL --ダブルクォートで囲む --SQL文、関数は大文字 --プレースホルダを使用する場合は、シングルクォートで囲む --カンマは、後ろに持ってきて、行の頭に持ってこない -ドキュメント -phpocumenter互換で -ファイル /** * 簡単な説明 * 詳しい説明 * LICENSE: * @copyright * @license * @version * @since */