symfony 1.0 book 第2章 まとめ(3)


symfony1


PHPの代表的なフレームワークの1つであるsymfonyについてまとめます。元ネタはsymfonybook-ja1.0です。

覚えておくべき基本的な手法

symfonyでよく使われるいくつかの手法があります。例えば、パラメーターホルダー、定数、そしてクラスのオートロードなどです。

パラメーターホルダー

symfonyの多くのクラスはパラメーターホルダー(parameter holder)を実装しています。これはゲッターとセッターメソッドを持つプロパティ(属性、メンバ変数)をカプセル化するのに役立ちます。たとえば、sfResponseクラスはgetParameterHolder()メソッドを呼び出すとパラメーターホルダーオブジェクトを取得することができます。このパラメータホルダーを使用することで各プロパティにアクセスできます。


パラメーターホルダーを使う多くのクラスはget/setメソッドが短く記述できるプロキシ(proxy)メソッドを使うことができます。

パラメーターホルダーのゲッターは第2引数にデフォルト値を指定することができます。いちいち条件文でエラー処理を記述する手間が省けます。簡単にフォールバックメカニズム(障害が起きても最低限の機能を維持するメカニズム)を実装することができます。実際の使い方は以下のようになります。

定数

symfonyでは定数を扱う場合、sfConfigと呼ばれる独自の設定オブジェクトを使用します。このオブジェクトはどこからでもパラメーターをアクセスできる静的なメソッドを提供します。sfConfigクラスのメソッドの使用法は以下の通りです。

クラスのオートロード

通常、PHPでクラスを使う場合、まずクラスの定義をインクルードする必要があります。

しかし、多くのクラス、深いディレクトリ構造を持つプロジェクトにおいて、すべてのクラスのファイルとそれらのパスを追跡するにはあまりにコストがかかりすぎます。symfonyはspl_autoload_register()関数によって、includeステートメントを記述しなくてもいきなりクラスを使うことができます。

symfonyはプロジェクト配下のlib/ディレクトリに存在する拡張子.phpで終わるファイル内でMyClassの定義を探します。クラスの定義が見つかるとファイルは自動的にインクルードされます。

全てのクラスをlib/ディレクトリに保存した場合はクラスをインクルードする必要がなくなります。このような仕組みにより、symfonyのプロジェクトは通常includeステートメントもしくはrequireステートメントを必要としません。

symfonyのオートロード機能は最初のリクエスト時に、設定ファイルで指定されたディレクトリのリストをスキャンします。symfonyはこれらのディレクトリが含む全てのクラスを登録し、クラス/ファイルを連想配列として保存(キャッシュ)します。この方法によって、今後のリクエストではディレクトリのスキャンは行われず、パフォーマンスの向上につながります。ただし、クラスファイルをプロジェクトに追加もしくは移動させた場合は、symfony clear-cacheコマンドでキャッシュをクリアしてクラスの登録状態を最新にする必要があります。

シェアして頂けると嬉しいです

















チャーム本店



価格.com ブロードバンド

価格.com 自動車保険









■コメントはお気軽にどうぞ