Introducing
Your new presentation assistant.
Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.
Trending searches
action/ controller/ filter/ mailer/ storage/ vendor/
addon/ database/ form/ plugin/ task/ view/
autoload/ debug/ generator/ plugins/ test/ widget/
cache/ escaper/ helper/ request/ user/ yaml/
command/ event_dispatcher/ i18n/ response/ util/
config/ exception/ log/ routing/ validator/
libディレクトリ以下には好きなようにディレクトリを作成できます。
sfApplicationConfiguration
今回は説明しませんでしたが、これらのクラス群を
うまく繋いでいるのがevent_dispatcherです。
ソースを読んでいて、$this->dispatcherという変数が
あった場合は大体event_dispatcherを利用しています。
アシアル株式会社
twitter:fivestr
event_dispatcherを理解することで、
symfonyの理解を深め、symfonyでできることが
ぐっと増えます。
http://d.hatena.ne.jp/Fivestar
これらの中身をざっくばらんに紹介していきます
アシアル株式会社 小川雄大
http://d.hatena.ne.jp/Fivestar/
symfonyコマンドの制御を行うクラス
セッションを管理するクラス
フォーム用のウィジェットクラス
アクション関連のクラス
symfonyがデフォルトで含んでいるプラグイン
様々なユーティリティクラス
Webデバッグツールバーなどのデバッグ情報を扱うクラス
国際化関連のクラスやデータファイル
アプリケーションのフローを制御するクラス
sfActionの親クラスがsfComponentです。
アプリケーションが呼び出されると、
これらのフィルターが順番に実行されます。
開発環境で右上に出てくる、
Webデバッグツールバーを制御する
クラスが含まれています。
コマンドの引数などの制御や、
コマンドの出力結果に色をつけるなどを
行うクラスが含まれています。
他のディレクトリに属さない
ユーティリティクラスが
格納されています。
forwardを行った際などは新しいアクションクラスの
インスタンスが生成されますが、それらは
sfActionStackに格納されます。
国際化に関するクラスです。
アクションの読み込みはsfExecutionFilterで
行われます。
フォームで利用するウィジェットです。
実際のコマンドの内容はtaskになります。
とても重要なクラス、
これらのフィルターはsfFilterChainによって
管理されています。
セッションを管理するクラスです。
MySQLなどを利用することも可能です。
これらはインスタンス化されたのち、
userクラスの内部に渡されます。
symfony 1.4では
DoctrineとPropelを扱うプラグインが
含まれています。
これにより、好きなORMを選択して
利用可能です。
Webデバッグツールバー上に出てくる
ログや処理時間などの情報はそれぞれ
sfWebDebugPanelというクラスになります。
クラス以外にも、基本的な言語の
データが含まれています。
フィルターは設定ファイルで追加や順番変更が
可能です。
が含まれています。
symfony全体のディレクトリ構成を把握する!
ページャーなど
アプリケーションの設定クラスや、
設定ファイルを読み込むためのクラス、
設定ファイルのベースとなるファイル
とりあえずsfPagerが入ってます
symfonyコマンドから利用可能する処理の実態となるクラス
オブジェクトをラッピングしてエスケープ処理を行うためのクラス
フォーム用のバリデータクラス
ログ出力に関連するクラス
リクエストクラス
フォームクラス
YAMLファイルのローダー/ダンパー
それ以外は特に見る必要はないと思います。
sfProjectConfiguration
設定ファイルを読み込んで処理を行うクラスです。
symfonyではテンプレートに変数を渡す際に、
これらのEscaperオブジェクトでラッピングされます。
そして、最終的な出力結果に対してhtmlspecialcharsなどの
エスケープ処理を行ってくれるようになります。
全ての値がデフォルトでエスケープされている感覚で
変数を利用することが可能になっています。
symfonyコマンドを実行する際の
様々な処理の実態となるクラスです。
sfPluginConfiguration
実際には設定ファイルを毎回読み込むことはせず、
一旦PHPファイルに変換します。
変換したファイルの出力先はcacheディレクトリです。
様々なログ出力に関するクラスです。
特別なログ出力したい場合は、
sfLoggerInterfaceを実装したクラスを
自前で作ることも可能です。
プロジェクトやアプリケーションの設定を行うクラスです。
ヘルパーの読み込みはsfApplicationConfigurationから
行います。
設定ファイル以外にも、運用環境では
コアクラスを1つのファイルにまとめて
キャッシュする、
sfCompileConfigHandlerというクラスなども
あります。
リクエストを扱うクラスです。
$_SERVERなどもこのリクエストクラスから
参照します。
フォームクラスが含まれています。
フォームで利用するバリデータクラスです。
環境(prod/devなど)の情報、デバッグモードかどうか、
プロジェクトディレクトリのパスなどの情報を保持します。
エスケープしたくない場合、これらのオブジェクトにある
getRawValue()メソッドを実行することで、
元々のオブジェクトが取得可能です。
YAMLファイルのロードや
ダンプを行うクラスです。
sfTaskクラスを継承して自前のタスクを
作ることも可能です。
これのためのgenerate:taskというタスクが
用意されています。
sfOutputEscaperSafeはエスケープ対象に
しないようにするためのオブジェクトです。
この他にも、app.ymlやsettings.ymlの情報を保持するsfConfigクラスや、
このディレクトリの中にあるconfigディレクトリには
設定ファイルのベース情報が入っています。
参考:
http://d.hatena.ne.jp/Fivestar/20090722/1248227287
クラスのオートロードを行うクラス
ファンクショナルテストで利用するクラス
symfony以外のライブラリ
symfonyではプロジェクトやアプリケーションのディレクトリの中に
lib というディレクトリが作成されるようになっています。
レスポンスクラス
様々な処理の中に、処理を組み込むためのクラス
クラスなどの自動生成に関連するクラス
コントローラクラス
SwiftMailerをsymfonyで扱うためのクラス
libディレクトリ内に
リクエストと対をなす、レスポンスクラスです。
ファンクショナルテストとは、
アクションのテストを自動化するための仕組みです。
http://blog.asial.co.jp/670
ブラウザをエミュレーションするようなイメージです。
という形式でファイルを置いておくと、自分でrequireしなくても
symfony側が自動的にクラスファイルを読み込んでくれます。
話すと長くなるのですが...
レスポンスとして返すヘッダー情報などは
このレスポンスクラスに指定します。
HTTPのステータスコードなども保持しています。
アクションを制御するコントローラクラスです。
アクション実行中に発生した例外は
sfWebControllerクラスが捕捉し、
エラー画面を出力します。
モデルなどの自動生成を行うためのクラスです。
Propelでモデルを生成するときなどに利用されているようです。
symfony 1.3/1.4ではSwiftMailerという
メール送信ライブラリが含まれています。
このSwiftMailerをsymfonyに合わせて
少しカスタマイズしたクラスが
sfMailerです。
lime: Unitテスティング
オブザーバパターンの実装で、
様々な箇所で、好きなコールバック関数を
実行できるようにするための仕組みです。
テストを記述するための様々なクラスが
格納されています。
Cookieもこのクラスに指定します。
swiftmailer: メール送信
SwiftMailer本体はvendorに含まれています。
ビュー出力に関するクラス
アプリケーションにアクセスしてきたユーザを表すクラス
ルーティングクラス
キャッシュを行うためのクラス
データベースを扱うための基本的なクラス
テンプレート側で利用する便利な関数群
例外クラス
プラグインのインストールなどに関連するクラス
http://blog.asial.co.jp/535
ヘルパーは関数群です。
アプリケーションにアクセスしている
ユーザを表すオブジェクトです。
ユーザオブジェクトの内部にはセッションを
管理するstorageクラスを持っています。
symfonyの例外クラスがまとまっています。
実際にはSPL例外が利用されることも多いです。
アクションからテンプレートを出力する際の
制御を行うクラスです。
通常、sfPHPViewが利用されます。
変数をescaperでラッピングする処理なども
ここで行われます。
キャッシュはrouting、i18n、
viewで利用されます
databases.ymlに記述した接続情報などを管理するクラス群です。
ここにあるクラスを意識して利用することはあまりないと思います。
プラグインに関連するコマンドを実行した際に
制御を行うクラスが格納されています。
頻繁に利用するのは
・UrlHelper
・AssetHelper
・PartialHelper
です。基本的にこれらは最初から
読み込まれるようになっています。
ルーティングに関連するクラスです。
また、dataというディレクトリに
例外発生時に表示するテンプレートが
格納されています。
この他にも、権限や認証の設定などを
格納することが可能です。