22
Zend Framework基礎 Zend Framework基礎

Zend Framework基礎 - IBM iへようこそ2. Vスクリプトのフォルダ場所を設定 3. そのフォルダにVスクリプトを設置 4. Zend_Viewの文字コードを設定

  • Upload
    others

  • View
    1

  • 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. レンダリング結果をレスポンスオブジェクトにセット