罪と罰++二律背反


[[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
  */

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS