PHPの代表的なフレームワークの1つであるsymfonyについてまとめます。元ネタはsymfonybook-ja1.0です。
MVCアーキテクチャ
symfonyは3つのレベルから構成される、MVCアーキテクチャ(Model-View-Controller architecture)として知られる古典的なWebのデザインパターンに基づいています。
・モデル(model)はアプリケーションが影響を与える情報、ビジネスロジックが実装されます。
・ビュー(view)はモデルの内容をレンダリングし、Webページとして表示する役割を持ちます。
・コントローラー(controller)はユーザーのアクション(入力やクリックなど)に対応する、モデルのデータをビューに渡すなどの役割があります。
※PHPにおけるMVCについてはこちら(PHPにおけるMVCフレームワークの考え方)が参考になるかもしれません。
symfonyによるMVCの実装方法
symfonyにおけるMVCの実装は以下の様なカンジになっています。具体的な例を挙げないと非常にわかりにくいかもしれませんが、MVCに基づいた7つの部品から構成されます。これらの基本となる部品はsymfonyがクラスとして自動で生成するものがほとんどです。
■モデルレイヤー
データベースの抽象化
データベースに依存するコード(DB接続処理やSQL)をラップしたメソッドなどを実装する
データアクセス
データベースの抽象化済みのメソッドをコールしてデータベースにアクセスする
■ビューレイヤー
ビュー
画面固有のロジック部分、テンプレートに含まれるPHPコード部分などを指します。
テンプレート
画面固有のコンテンツが含まれ、レイアウトにインクルードされます。
レイアウト
ヘッダーやフッターなどの画面の共通部分が主に含まれ、テンプレートをインクルードします。画面の大枠となります。
■コントローラーレイヤー
フロントコントローラー
アプリケーション唯一のエントリポイントとなります。
アクション
リクエスト、セキュリティのチェック、設定の読み込みなどを行います。
symfonyのコアクラス
・symfonyのMVCアーキテクチャで利用されるsymfonyコアクラスには以下の様なものがあります。
・sfController:コントローラークラスです。リクエストをデコードしてアクションに渡します。
・sfRequest:すべてのリクエスト要素(パラメーター、Cookie、ヘッダーなど)を保存します。
・sfResponse:レスポンスヘッダーと内容を含みます。これは最終的にHTMLに変換されブラウザに送信されます。
symfonyのすべてのクラスはプレフィックスとしてsfを使います。テンプレート内のsymfonyのコア変数も同様です。これ
によって独自に作成したクラスと変数の名前の衝突を回避することが可能できます。
symfonyで利用されているコーディング規約のなかで、UpperCamelCase(アッパーキャメルケース)はクラスと変数の命名に関する規約です。ただし、2つの例外が存在します。symfonyのコアクラスは小文字のsfで始まり、テンプレートで見つかる変数はアンダースコア(_)で区切られた構文を使います。