The symfony Reference Book

イベント

You are currently browsing
the website for symfony 1

Visit the Symfony2 website


About

You are currently reading "The symfony Reference Book" which is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.

Master symfony

Be trained by SensioLabs experts (2 to 6 day sessions -- French or English).
trainings.sensiolabs.com

Books on symfony

Learn more about symfony with the official guides.
books.sensiolabs.com

L'audit Qualité par SensioLabs

200 points de contrôle de votre applicatif web.
audit.sensiolabs.com

Chapter Content

使い方

イベントの種類

notify

notifyUntil

filter

イベント

application

application.log

application.throw_exception

command

command.log

command.pre_command

command.post_command

command.filter_options

configuration

configuration.method_not_found

component

component.method_not_found

context

context.load_factories

controller

controller.change_action

controller.method_not_found

controller.page_not_found

plugin

plugin.pre_install

plugin.post_install

plugin.pre_uninstall

plugin.post_uninstall

request

request.filter_parameters

request.method_not_found

response

response.method_not_found

response.filter_content

routing

routing.load_configuration

task

task.cache.clear

template

template.filter_parameters

user

user.change_culture

user.method_not_found

user.change_authentication

view

view.configure_format

view.method_not_found

view.cache

view.cache.filter_content

symfony training
Be trained by symfony experts
May 29: Paris (Web Development with Symfony2 - Français)
May 31: Paris (Mastering Symfony2 - Français)
Jun 06: Paris (Introduction to Symfony2 - Français)
Jun 06: Paris (Introduction to Symfony2 - English)
Jun 06: Paris (Going Further with Symfony2 - English)
and more...

Search


powered by google
You are currently browsing "The symfony Reference Book" in Japanese for the 1.2 version - Switch to version: - Switch to language:
Creative Commons License This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.
This version of symfony is not maintained anymore.
If some of your projects still use this version, consider upgrading as soon as possible.
The symfony reference guide
Support symfony!
Buy this book
or donate.
Buy The symfony reference guide from amazon.com

symfonyのコアコンポーネントはsfEventDispatcherオブジェクトのおかげで疎結合されています。 Event Dispatcherはコアコンポーネントのあいだのコミュニケーションを管理します。

オブジェクトはディスパッチャーにイベントを通知し、ほかのオブジェクトは特定のイベントをリスニングするためにディスパッチャーに接続できます。

イベントはドット(.)で区切られた名前空間と名前で構成される単なる名前です。

使い方

最初にイベントオブジェクトを作ることでイベントを通知できます:

$event = new sfEvent($this, 'user.change_culture', array('culture' => $culture));

そして通知します:

$dispatcher->notify($event);

sfEventコンストラクターは3つの引数を受け取ります:

イベントをリスニングするには、そのイベントの名前に接続します:

$dispatcher->connect('user.change_culture', array($this, 'listenToChangeCultureEvent'));

connectメソッドは2つの引数を受け取ります:

リスナーの実装例は次のとおりです:

public function listenToChangeCultureEvent(sfEvent $event)
{
  // メッセージフォーマットオブジェクトを新しいcultureで変更する
  $this->setCulture($event['culture']);
}

リスナーは最初の引数としてイベントを受け取ります。 イベントオブジェクトはイベントの情報を得るためのメソッドをいくつか持ちます:

イベントオブジェクトはパラメーターを取得するために配列としてもアクセスできます。

イベントの種類

イベントは3つの異なるメソッドで起動できます:

notify

notify()メソッドはすべてのリスナーを通知します。 リスナーは値を返すことはできずすべてのリスナーが実行されることが保証されます。

notifyUntil

notifyUntil()メソッドはtrueの値を返すことで1つのリスナーがチェーンを停止させるまですべてのリスナーを通知します。

チェーンを停止させるリスナーはsetReturnValue()メソッドを呼び出すこともできます。

通知元のオブジェクトはリスナーはisProcessed()メソッドを呼び出すことで処理されたイベントが保有されているかチェックできます:

if ($event->isProcessed())
{
  // ...
}

filter

filter()メソッドはすべてのリスナーを通知します。 これらは任意の値をフィルタリング可能で、通知元オブジェクトによって2番目の引数として渡され、3番目の引数としてリスナーのcallableによって読み取りされます。 すべてのリスナーには値が渡され、これらはフィルタリングされた値を返さなければなりません。 すべてのリスナーの実行は保証されます。

通知元オブジェクトはgetReturnValue()メソッドを呼び出すことでフィルタリングされた値を取得できます:

$ret = $event->getReturnValue();

イベント

application

application.log

通知メソッド: notify

デフォルトの通知元クラス: たくさんのクラス

パラメーター 説明
priority 優先順位(sfLogger::EMERGsfLogger::ALERTsfLogger::CRITsfLogger::ERRsfLogger::WARNINGsfLogger::NOTICEsfLogger::INFOもしくはsfLogger::DEBUG)

application.logイベントはWebリクエストに対してロギングを行うためにsymfonyによって利用されるメカニズムです(loggerファクトリを参照)。 このイベントはたいていのsymfonyのコアコンポーネントによって通知されます。

application.throw_exception

通知メソッド: notifyUntil

デフォルトの通知元クラス: sfException

リクエスト処理のあいだに補足されない例外が投げられるときにapplication.throw_exceptionイベントが通知されます。

補足されない例外が投げられたときに特別なことを行うためにこのイベントをリスニングできます(Emailメールを送信する、もしくはエラーをロギングするなど)。 イベントを処理することでsymfonyのデフォルトの例外管理メカニズムをオーバーライドすることもできます。

command

command.log

通知メソッド: notify

デフォルトの通知元クラス: sfCommandクラス

パラメーター 説明
priority 優先順位(sfLogger::EMERGsfLogger::ALERTsfLogger::CRITsfLogger::ERRsfLogger::WARNINGsfLogger::NOTICEsfLogger::INFOもしくはsfLogger::DEBUG)

command.logイベントはsymfonyのCLIユーティリティでロギングを行うためにsymfonyによって利用されるメカニズムです。(loggerファクトリを参照)。

command.pre_command

通知メソッド: notifyUntil

デフォルトの通知元クラス: sfTask

パラメーター 説明
arguments CLIに渡される引数の配列
options CLIに渡されるオプションの配列

タスクの実行直前にcommand.pre_commandイベントが通知されます。

command.post_command

通知メソッド: notify

デフォルトの通知元クラス: sfTask

タスクの実行直後にcommand.post_commandイベントが通知されます。

command.filter_options

通知メソッド: filter

デフォルトの通知元クラス: sfTask

パラメーター 説明
command_manager sfCommandManagerインスタンス

タスクCLIのオプションが解析される前にcommand.filter_optionsイベントが通知されます。 このイベントはユーザーに渡されるオプションをフィルタリングするために使うことができます。

configuration

configuration.method_not_found

通知メソッド: notifyUntil

デフォルトの通知元クラス: sfProjectConfiguration

パラメーター 説明
method 呼び出されるが見つからないメソッドの名前
arguments メソッドに渡される引数

メソッドがsfProjectConfigurationクラスで定義されていない場合configuration.method_not_foundイベントが通知されます。 このイベントをリスニングすることで、継承を使わずにクラスにメソッドを追加できます。

component

component.method_not_found

通知メソッド: notifyUntil

デフォルトの通知元クラス: sfComponent

パラメーター 説明
method 呼び出されるが見つからないメソッド
arguments メソッドに渡される引数

メソッドがsfComponentクラスで定義されていないときcomponent.method_not_foundイベントが通知されます。 このイベントをリスニングすることで、継承を使わずにメソッドをクラスに追加できます。

context

context.load_factories

通知メソッド: notify

デフォルトの通知元クラス: sfContext

すべてのファクトリが初期化された直後にsfContextオブジェクトによってリクエストごとにcontext.load_factoriesイベントが1回通知されます。 これはすべてのコアクラスの初期化で通知される最初のイベントです。

controller

controller.change_action

通知メソッド: notify

デフォルトの通知元クラス: sfController

パラメーター 説明
module 実行されるモジュールの名前
action 実行されるアクションの名前

アクションが実行される直前にcontroller.change_actionが通知されます。

controller.method_not_found

通知メソッド: notifyUntil

デフォルトの通知元クラス: sfController

パラメーター 説明
method 呼び出されるが見つからないメソッドの名前
arguments メソッドに渡される引数

メソッドがsfControllerクラスで定義されていないときにcontroller.method_not_foundイベントが通知されます。 このイベントをリスニングすることで、継承を使わずにメソッドをクラスに追加することができます。

controller.page_not_found

通知メソッド: notify

デフォルトの通知元クラス: sfController

パラメーター 説明
module 404エラーを生成するモジュールの名前
action 404エラーを生成するアクションの名前

リクエスト処理のあいだに404エラーが生成されたときにcontroller.page_not_foundが通知されます。

Eメールを送信する、エラー、イベントをロギングするなど、404ページが表示されるときに 何か特別なことを行うためにこのイベントをリスニングできます。

plugin

plugin.pre_install

通知メソッド: notify

デフォルトの通知元クラス: sfPluginManager

パラメーター 説明
channel プラグインのチャンネル
plugin プラグインの名前
is_package ローカルパッケージ(true)、もしくはWebパッケージ(false)をインストールするかどうか

プラグインがインストールされる直前にplugin.pre_installイベントが通知されます。

plugin.post_install

通知メソッド: notify

デフォルトの通知元クラス: sfPluginManager

パラメーター 説明
channel プラグインのチャンネル
plugin プラグインの名前

プラグインがインストールされた直後にplugin.post_installイベントが通知されます。

plugin.pre_uninstall

通知メソッド: notify

デフォルトの通知元クラス: sfPluginManager

パラメーター 説明
channel プラグインのチャンネル
plugin プラグインの名前

プラグインがアンインストールされる直前にplugin.pre_uninstallイベントが通知されます。

plugin.post_uninstall

通知メソッド: notify

デフォルトの通知元クラス: sfPluginManager

パラメーター 説明
channel プラグインのチャンネル
plugin プラグインの名前

プラグインがアンインストールされた直後にplugin.post_uninstallイベントが通知されます。

request

request.filter_parameters

通知メソッド: filter

デフォルトの通知元クラス: sfWebRequest

パラメーター 説明
path_info リクエストのパス

リクエストパラメーターが初期化されるときにrequest.filter_parametersイベントが通知されます。

request.method_not_found

通知メソッド: notifyUntil

デフォルトの通知元クラス: sfRequest

パラメーター 説明
method 呼び出されたが見つからないメソッドの名前
arguments メソッドに渡される引数

メソッドがsfRequestクラスで定義されていないときにrequest.method_not_foundイベントは通知されます。 このイベントをリスニングすることで、継承を使わずにメソッドをクラスに追加できます。

response

response.method_not_found

通知メソッド: notifyUntil

デフォルトの通知元クラス: sfResponse

パラメーター 説明
method 呼び出されたが見つからないメソッドの名前
arguments メソッドに渡される引数

メソッドでsfResponseクラスが定義されていないときresponse.method_not_foundイベントが通知されます。 このイベントをリスニングすることで、継承を使わずに、メソッドをクラスに追加できます。

response.filter_content

通知メソッド: filter

デフォルトの通知元クラス: sfResponse

レスポンスが送信される前にresponse.filter_contentイベントが通知されます。 このイベントをリスニングすることで、送信される前にレスポンスの内容を操作できます。

routing

routing.load_configuration

通知メソッド: notify

デフォルトの通知元クラス: sfRouting

ルーティングファクトリがルーティングコンフィギュレーションをロードするときrouting.load_configurationイベントが通知されます。

task

task.cache.clear

通知メソッド: notifyUntil

デフォルトの通知元クラス: sfCacheClearTask

パラメーター 説明
app アプリケーションの名前
type キャッシュの種類(allconfigi18nroutingmoduletemplate)
env 環境

ユーザーがcache:clearタスクでCLIからキャッシュをクリアするときにtask.cache.clearイベントが通知されます。

template

template.filter_parameters

通知メソッド: filter

デフォルトの通知元クラス: sfViewParameterHolder

ビューファイルがレンダリングされる前にtemplate.filter_parametersイベントが通知されます。 このイベントをリスニングすることでテンプレートに渡される変数にアクセスおよび操作できます。

user

user.change_culture

通知メソッド: notify

デフォルトの通知元クラス: sfUser

パラメーター 説明
culture ユーザーのculture

リクエストのあいだにユーザーのcultureが変更されるときにuser.change_cultureイベントが通知されます。

user.method_not_found

通知メソッド: notifyUntil

デフォルトの通知元クラス: sfUser

パラメーター 説明
method 呼び出されるが見つからないメソッドの名前
arguments メソッドに渡される引数

メソッドがsfUserクラスで定義されていないときに、user.method_not_foundイベントが通知されます。 このイベントをリスニングすることで、継承を使わずにメソッドをクラスに追加できます。

user.change_authentication

通知メソッド: notify

デフォルトの通知元クラス: sfBasicSecurityUser

パラメーター 説明
authenticated ユーザーが認証されているかどうか

ユーザーの認証ステータスが変更されるときにuser.change_authenticationイベントが通知されます。

view

view.configure_format

通知メソッド: notify

デフォルトの通知元クラス: sfView

パラメーター 説明
format リクエストフォーマット
response レスポンスオブジェクト
request リクエストオブジェクト

リクエストがsf_formatをセットするときにビューによってview.configure_formatイベントが通知されます。 レイアウトを設定するもしくは設定解除するといった単純作業をsymfonyが行った後でこのイベントが通知されます。 このイベントによってリクエストされたフォーマットに従ってビューとレスポンスオブジェクトを変更できます。

view.method_not_found

通知メソッド: notifyUntil

デフォルトの通知元クラス: sfView

パラメーター 説明
method 呼び出され見つからないメソッドの名前
arguments メソッドに渡される引数

メソッドがsfViewクラスで定義されるときにview.method_not_foundイベントが通知されます。 このイベントをリスニングすることで、継承を使わずにメソッドをクラスに追加できます。

view.cache

view.cache.filter_content

通知メソッド: filter

デフォルトの通知元クラス: sfViewCacheManager

パラメーター 説明
response レスポンスオブジェクト
uri キャッシュされるコンテンツのURI
new コンテンツがキャッシュのなかで新しいものかどうか

コンテンツがキャッシュから読み込まれるときにview.cache.filter_contentイベントが通知されます。

タスク »
« そのほかの設定ファイル

Questions & Feedback

If you find a typo or an error, please register and open a ticket.

If you need support or have a technical question, please post to the official user mailing-list.