Dive into symfony with Event Dispatcher

symfonyのEvent Dispatcherの仕組みをご紹介 »
Katsuhiro Ogawa

Dive into symfony
with Event Dispatcher
Katsuhiro OGAWA
also known as
fivestar
Symfony Components 
symfonyから独立し、様々なドメインに特化したコンポーネント群
YAMLパーサー
DIコンテナ
テンプレートエンジン
このあと詳しく話します
Symfony 2 secret weapon
YAML
Dependency Injection
Request Handler
Event Dispatcher
Templating
symfony 1.2では
が使われています
YAML
Event Dispatcher
5つのコンポーネントは
Symfony 2で特に重要となります
Request Handler以外の
コンポーネントは
既に公開されています
Event Dispatcher
Facilitating communication between PHP classes
クラス間のコミュニケーションツール
ご清聴ありがとうございました
Katsuhiro OGAWA
http://d.hatena.ne.jp/Fivestar/
Thanks,
イベントとは
symfonyの内部には様々なイベントが用意されています
application.log
application.throw_exception
component.method_not_found
response.filter_content
template.filter_parameters
user.change_culture
ログの通知
- ログファイルへの書き込みなど
例外が捕捉されなかった時
sfComponent::__call()
レスポンス内容のフィルタリング
- WebDebugToolber
テンプレートレンダリング時に
渡す変数のフィルタリング
- $sf_requestや$sf_userなど
Cultureの切り替え
- sfI18NのCultureの変更
イベントハンドリング
sfEvent
sfEventDispatcher
イベントリスナー
イベントオブジェクト
登録されているイベントリスナーにイベントを通知
sfEventを第1引数に受け取るメソッド
テンプレートに$sf_requestや$sf_userを
設定する処理の実際の流れ
sfViewParameter::toArray()
sfEventDispatcher
Event Dispatcherにtemplate.filter_parametersイベントを通知して値をフィルタリングする
フィルタリングした値をイベントからgetReturnValue()メソッドで取得
new sfEvent()
filterTemplateParameters()
return $parameters
getReturnValue()
sfContext::initialize()
template.filter_parametersイベントが通知されたときに
$this->filterTemplateParameters()を呼び出して、テンプレートパラメータに
sf_requestやsf_userなどをセットする
symfony platforms
Asial Corporation
1.1 <= 2.0
2.0
sfRequestにisMobileメソッドを追加する
プラグインを作成する
MyMobile
イベントタイプ
notify
notifyUntil
filter
登録されているリスナーすべてにイベントを通知
いずれかのリスナーがtrueを返すまでイベントを通知
すべてのリスナーにイベントを通知し、
1つの値に対してフィルタリングをおこなう
$request

Loading comments...

Please log in to add your comment.

Report abuse

More presentations by Katsuhiro Ogawa