Doctrine_Record::save() をオーバーライドすると、Symfony 1.2 で厳密な標準エラーが発生するのはなぜですか?
質問
次のモデルがあります:
class Model extends BaseModel
{
public function save($conn = null)
{
if(!$this->getId())
{
//do stuff
}
return parent::save($conn);
}
}
の API の説明に従っているような気がします。 Doctrine_Record::save() 署名 (構文エラーになる奇妙な括弧を除いて...)。
このコードを実行すると、 それはうまくいきます しかし、次の警告が表示されます。
Strict Standards: Declaration of Model::save() should be compatible with that of Doctrine_Record::save() in $ROOT/lib/model/doctrine/Model.class.php on line 6
私は通常、エラー報告を ERROR_ALL に変更し、警告のないコードを使用するようにしています。これは気になります。すべての Doctrine ソース コードをチェックアウトし、grep で「save(」を実行し、署名を次々と試しました。何もない。初めて PHP が寛容すぎて変だと言われました :-) ?
解決
save メソッドの正しい署名は次のようになります。
public function save(Doctrine_Connection $conn = null)
他のヒント
余談ですが:他の関数ではこのエラーが発生する可能性がありますが、上記の代わりに function($event) を使用する必要があります。
所属していません StackOverflow