symfony1.2でのカスタムタスク

標準ではtask上でsfContextを使えないので、
executeメソッド内で

sfContext::createInstance($this->configuration);

とかやっていたのですがこのままでは使えない状況が…。

CLIからtaskを実行する分にはこれでいけるのですが、
actionなどからtaskをrunする場合はこれだと

Catchable fatal error: Argument 1 passed to sfContext::createInstance() must be an instance of sfApplicationConfiguration, instance of ProjectConfiguration given

っていうエラーが表示されてしまいます。
ようはエントリポイントのPHPでもう既にcreateInstanceしているからダメということですね。
sfContextのメソッドを調べてみるとhasInstanceというメソッドを発見。
なので上記の一行を

if(!sfContext::hasInstance()) sfContext::createInstance($this->configuration);

に変えてあげると無事エラーは表示されなくなりました!!

こういう情報ってあんまりWeb上にないのでソース読むしかないんですよね。
こういう細かいところで躓くことが多いsymfony1.2なのですが、
情報がやっぱ少ないなぁ…。
sfForm周りとかも。。。
まあ、自分で調べて分かったことはここにボチボチ書いていこうかと思っています。