ZendFrameworkの基礎

前回、『ZendFrameworkの導入』でZendFramewrokのインストールの方法と、『Hello World!!』の表示まで勉強してみましたが、今日は、『ZendFrameworkの基礎』を勉強してみたいと思います。 ZendFramewrokとは、PHPのコアエンジンであるZend Engine2を開発しているZend Technologies社が開発しているフレームワークです。商用システムでの利用を想定し、大規模システムの運用にも十分耐えうるように設計されています。また、商用システムでの利用に支障が出ないように、ライセンス形態に『BSDライセンス』を採用しています。また最大の利点は、各コンポーネントの独立性を高めた設計であり、一部のコンポーネントのみをロードしての利用も可能であることだと思います。よって、ZendFrameworkはフレームワークとしてだけでなく、『pear』のようなライブラリとしても利用することが可能です。ですので、覚えておいても絶対に損のないフレームワークだと思います。

すべての基本となるZend_Controller

Zend_Controllerは、多数のサブコンポーネントから構成されています。逆にメインとなるサブコンポーネントがあるわけではありません。それぞれのサブコンポーネントを組み合わせることで、MVCモデルの動作を実現しています。それでは、Zend_Controllerの構成要素を見てみましょう。

  • フロントコントローラ
    全てのリクエストを受け付け、処理を各機能に依頼し、レスポンスを返すためのコントローラです。。公開ディレクトリ上に置かれるPHPスクリプトはこのファイルだけになります。これによりディレクトリ構造をシンプルにすると同時に、セキュリティも確保しています。
  • ルータ
    フロントコントローラにより、受け付けられた処理依頼を、リクエストされたURLを解析して、担当コントローラと担当アクションを割り当てる処理(ルーティング)を行うコンポーネントです。
  • ディスパッチャ
    ルーターによって割り振られたアクションコントローラのアクションを実際に呼び出す処理を行うモジュールです。コントローラ名やアクション名を省略した時に、デフォルトコントローラやデフォルトアクションを呼び出すのもディスパッチャの仕事です。また、リクエストされた処理を呼び出すだけでなく、その前後に処理を横取りしたり、途中で別のアクションに振り替えるといった特殊な処理も行います。
  • アクションコントローラ
    ビジネスロジックと呼ばれる 実際の処理を記述するプログラムファイルです。通常は、単に『コントローラ』と呼ばれますが、フロントコントローラと区別するためアクションコントローラ呼ばれています。アクションコントローラは、Zend_Controller_Actionコンポーネントを継承した一つのクラス定義です。アクションコントローラの命名規則は、クラス名とファイル名は同じで、メソッド名はキャメルケース形式で命名します。
  • リクエストオブジェクト
    クライアントから送られてきた情報を全て管理しているのが、リクエストオブジェクトです。通常、PHPでは、リクエスト情報をスーパーグローバル変数($_GET、$_POST、$_COOKIEなど)として扱いますが、Zend Frameworkではこれらのグローバル変数ではなく、リクエストオブジェクトから取得します。
  • レスポンスオブジェクト
    クライアントへ返す情報を全て管理しているのが、レスポンスオブジェクトです。各アクションでの処理結果は、必ずレスポンスオブジェクトを通してクライアントへ返されます。出力に関して次のルールを守らなければなりません。
    1. echoやprint()などで出力しない。
    2. header()でヘッダを書き換えない
    3. header()でリダイレクトしない
  •  アクションヘルパー
    アクションヘルパーは、アクションコントローラに機能を追加します。
  • プラグイン
    プラグインは、イベント発生時の処理を追加します。 Zend_Controller_Plugin_Abstractを継承して作られたクラスです。作成したプラグインは、フロントコントローラに登録する作業が必要になります。プラグインを登録するに『registerPlugin』メソッドを利用します。

画面表示のZend_View

『Zend_View』は画面表示に関する処理を担当するコンポーネントです。MVCモデルでアプリケーションを作成すると、デフォルトで『Zend_View』が自動的に動作するようになっているため、気づかずにこのコンポーネントを利用しているケースも多いと思います。また、Zend_Viewは非常に汎用的に設計されているため、『Smarty』など外部のテンプレートエンジンを代わりに利用することも可能です。 Zend_viewでは、デフォルトで自動レンダリングモードが有効になっているので、決められた規約どおりにビュースクリプトを設置すれば、処理の手間がかなり軽減されるようになっています。

  • 拡張子
    ビュースクリプトの中身はPHPファイルですが、拡張子は、『phtml』にする必要があります。
  • ディレクトリ構成
    ビュースクリプトは1アクションにつき1ファイル必要です。『views/scripts』フォルダ内に、 コントローラ名と同じフォルダを作成し、その中にビュースクリプトファイルを設置します。
  • 命名規則
    コントローラ名と同じ名前のフォルダ内にアクション名と同じファイル名を設置します。又、アクション名が複数単語が接続されたキャメルケースの場合のファイル名は、全て小文字で単語間をバーでつなぎます(例:アクション名がviewSampleAction()の場合、ファイル名はview-sample.phtmlとなります)。
  • 変数にデータの設定
    ビュースクリプト内に定義した変数は、コントローラ側でセットする必要があります。Zend_Viewはマジックメソッドが使えますので、次のように簡単に処理できます。
    $this->view->変数名=セットする値; 
  • 連想配列のデータ設定
    『assign()』メソッドを使って、連想配列を渡すことにより、ビュースクリプト内の複数の変数に一度に値をセットすることができます。
    $this->view->assign(連想配列); 
  • 変数の出力
    変数の出力にはecho関数を使いますが、そのまま出力するとセキュリティ面で問題になる恐れがありますので、適切にエスケープ処理をするために『$this->escape()』メソッドを使用します。
    $this->escape(入力文字列); 
  • 文字コードの設定
    ビュースクリプト内で日本語を利用する場合は、次のように引数に文字コードを渡して『UTF-8』を指定します。
    $this->view->setEncoding(UTF-8);

ビューヘルパー

Zend_Viewでは、ビュースクリプトを作成する際に便利に利用できる多くのビューヘルパーを提供しています。代表的なビューヘルパーを見てみましょう。

  • formヘルパー
    HTMLのフォームタグを簡潔に記述できるためのヘルパーです。
  • Actionヘルパー
    ビュースクリプトの中からコントローラのアクションを実行して結果をP埋め込むためのヘルパーです。
  • Partialヘルパー
    ビュースクリプトの中に別のスクリプトを埋め込むヘルパーです。
  •  Placeholderヘルパー
    指定文字列に対する置換処理を行うためのヘルパーです。
  • Doctypeヘルパー
    Doctype宣言を埋め込むためのヘルパーです。
  • HeadLinkヘルパー
    CSSやRSSなどのリンク情報を埋め込むためのヘルパーです。
  • HeadMetaヘルパー
    メタ情報を埋め込むためのヘルパーです。
  • HeadScriptヘルパー
    JSなどのスクリプト情報を埋め込むためのヘルパーです。
  • HeadStyleヘルパー
    CSS情報を埋め込むためのヘルパーです。
  • HeadTitleヘルパー
    タイトル情報を埋め込むためのヘルパーです。
  • HTMLオブジェクトヘルパー
    Flashや動画などのオブジェクト情報を埋め込むためのヘルパーです。
  • inlineScriptヘルパー
    JSなどのスクリプト自体を埋め込むためのヘルパーです。

本日は、ZendFrameworkの基礎を勉強してみました。本日は以上です。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ