※この記事はsymfony 1.0のものです。
(filter内で) $this->isFirstCall()
なし
これがsfFilterインスタンスへの最初の呼び出しなら真を返す。
・・・というのが想定されている機能のようですが、"最初の呼び出しですか?"という問いかけの相手はこのメソッド自身のようで、たとえfilterのexecute()メソッドの呼び出しが初めてであっても、isFirstCall()を複数回呼び出すと2度目の呼び出し以降はfalseを返します。
つまり、以下のようなコードを書くと、このフィルタの処理は実行されなくなってしまうので注意しましょう。
class myFilter extends sfRenderingFilter
{
public function execute($filterChain)
{
$logger = $this->getContext()->getLogger();
//ここではtrueを返します
$logger->debug($this->isFirstCall()?'最初の呼び出し':'2度目以降の呼び出し');
//ここでは常にfalseを返してしまいます
if($this->isFirstCall()){
//このブロックの処理が実行される事はありません
//...実際の処理...
}
$filterChain->execute();
}
}
フィルタの中で定型文的に使うのが普通です。
The Definitive Guide to symfonyの翻訳(symfony1.0版) 第6章 - コントローラーレイヤーの内側
タグ : symfony 関数 sfFilter symfony1.0

