Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Zend Framework基礎Zend Framework基礎
初めてのアプリケーション(1/5)
• 下記の3つのファイルを作成
• 文字コードはUTF-8で作る
▫ HogeController.php▫ HogeController.php⇒C:¥zend¥learning¥application¥controllers
▫ piyo.phtml
▫ foo-bar.phtml⇒C:¥zend¥learning¥application¥views¥scripts¥hoge
初めてのアプリケーション(2/5)
• 下記のURLにアクセス
▫ http://localhost/learning/hoge/piyo
▫ http://localhost/learning/hoge/foo-bar▫ http://localhost/learning/hoge/foo-bar
初めてのアプリケーション(3/5)
• URL
▫ http://localhost/learning/hoge/piyo/⇒コントローラを指定⇒コントローラを指定
▫ http://localhost/learning/hoge/piyo/⇒アクションを指定
▫ http://…/コントローラ/アクション/パラメータ1/値1/パラメータ2/値2…
初めてのアプリケーション(4/5)
• コントローラ
▫ Zend_Controller_Actionを継承する
▫ アクション名Actionというメソッドを作る▫ アクション名Actionというメソッドを作る
▫ ハイフンの付くアクション名の場合には、fooBarActionのような名前になる
▫ 表示の際の事前処理を行う(モデル部分に相当)
初めてのアプリケーション(5/5)
• ビュー
▫ views¥scriptsフォルダ内にコントローラ名と同じフォルダを作成フォルダを作成
▫ そのフォルダ内に、アクション名.phtmlというファイルを作成する
▫ 形式はHTMLファイルと同じ
▫ PHPのコードはタグ内に記述
実行の流れ
1. フロントコントローラが全てのリクエストを処理
2. ルータがアクションコントローラとアクショ2. ルータがアクションコントローラとアクションを決定
3. ディスパッチャが実際にアクションを起動
フロントコントローラ
• 公開するPHPファイルは1つだけ⇒C:¥zend¥learning¥public¥index.php
• 全てのリクエストを受け取る• 全てのリクエストを受け取る
• システム全体をコントロールする
ルータ
• どのアクションが呼ばれるのか決定する
• いくつかの種類が存在
▫ Zend_Controller_Router_Rewrite:標準▫ Zend_Controller_Router_Rewrite:標準
▫ Zend_Controller_Router_Route:動的
▫ Zend_Controller_Router_Static:静的
▫ Zend_Controller_Router_Regex:正規表現
Zend_Controller_Router_Rewrite
• 特に指定しない場合にはこの標準ルータを使用
• 下記のURLの形式を解釈してアクションを呼び出す出す
• http://www.example.com/module/controller/action/param1/value1/param2/value2…
アクションコントローラ(1/2)
• ビジネスロジックを実行するコンポーネント(規模が大きくない場合)
⇒大規模になると、モデル用クラスを作成する⇒大規模になると、モデル用クラスを作成する
• Zend_Controller_Actionクラスを継承
• application/controllers内に格納
• ファイル名とクラス名を合わせる⇒HogeControllerクラスであれば、ファイル名は「HogeController.php」となる
アクションコントローラ(2/2)
• 下記のようなメソッドを記述する
▫ init():共通の初期化処理を記述
▫ preDispatch():アクションの前の処理を記述▫ preDispatch():アクションの前の処理を記述
▫ XXXAction():アクション処理を記述
▫ postDispatch():アクション後の処理を記述
• アクション処理の後に、ビュースクリプト(phtmlファイル)が実行される
ビュースクリプトの無効化
• ビュースクリプトを無効化し、表示の制御をプログラム側で行うことができる
• アプリケーション全体や、action単位で無効化• アプリケーション全体や、action単位で無効化させることができる
リクエストオブジェクト(1/3)
• リクエストオブジェクトとは
▫ クライアントから送られてくる情報を保持する
▫ 通常のPHPでは$_GET、$_POSTといったスー▫ 通常のPHPでは$_GET、$_POSTといったスー
パーグローバル変数として管理してきたものをすべて管理⇒スーパーグローバル変数は使わない
▫ Zend_Controller_Request_Httpクラス
リクエストオブジェクト(2/3)
• Actionコントローラ内において、getRequest()メソッドを呼び出して取得する
例)$req = $this->getRequest();例)$req = $this->getRequest();
• その後このオブジェクトに対してメソッドを呼び出す。
リクエストオブジェクト(3/3)
• getPost、getQuery、getParam(s)の違い
▫ getPost:postデータを取得
▫ getQuery:getデータを取得▫ getQuery:getデータを取得
▫ getParam(s):URLパラメータを含めた全てを取得。URLパラメータ⇒GET⇒POSTの順
レスポンスオブジェクト(1/2)
• レスポンスオブジェクトとは
▫ クライアントへ送られる情報(ヘッダーや表示する内容など)を保持するる内容など)を保持する
▫ 自動レンダリングモードが無効の場合に利用
▫ Zend_Controller_Response_Httpクラス
レスポンスオブジェクト(2/2)
• Actionコントローラ内において、getResponse()メソッドを呼び出して取得する
例)$res = $this->getResponse();例)$res = $this->getResponse();
• その後このオブジェクトに対してメソッドを呼び出す。
ビュー(1/4)
• ビューとは
▫ 見た目を定義するためのコンポーネント
▫ Zend_Viewクラスを利用する▫ Zend_Viewクラスを利用する
▫ ビュースクリプトを自動的に読み込み、表示できるようになっている
ビュー(2/4)
• ビュースクリプトとは
▫ 拡張子の違うPHPファイル⇒phtmlファイル
▫ 表示に関するコードのみ記述するようにする▫ 表示に関するコードのみ記述するようにする
▫ ビュースクリプトに記述するPHPは、通常のコードとは別であることに注意(for ~endfor;など)
▫ Actionコントローラから取得したデータは必ずサニタイジングを行うこと⇒$this->escape( データ )
ビュー(3/4)
• コントローラからVスクリプトへのデータ転送自動レンダリングモードが有効の場合(P.74)
1. 決められたフォルダにVスクリプトを設置1. 決められたフォルダにVスクリプトを設置
2. Zend_Viewの文字コードを設定
3. Zend_Viewにデータをセット
ビュー(4/4)
• コントローラからVスクリプトへのデータ転送自動レンダリングモードが無効の場合1. Zend_Viewをインスタンス化1. Zend_Viewをインスタンス化2. Vスクリプトのフォルダ場所を設定3. そのフォルダにVスクリプトを設置4. Zend_Viewの文字コードを設定5. Zend_Viewにデータをセット6. 手動でレンダリングを実行
7. レンダリング結果をレスポンスオブジェクトにセット