Php 为什么在Symfony 1.2中重写Doctrine_Record::save()会给我一个严格的标准错误?

Php 为什么在Symfony 1.2中重写Doctrine_Record::save()会给我一个严格的标准错误?,php,symfony1,doctrine,Php,Symfony1,Doctrine,我有以下型号: class Model extends BaseModel { public function save($conn = null) { if(!$this->getId()) { //do stuff } return parent::save($conn); } } 我觉得我在遵循API对签名的描述(除了奇怪的括号,我会给我一个语法错误…) 当我运行此代码时,它运行良好,但我得到以下

我有以下型号:

class Model extends BaseModel
{
   public function save($conn = null)
   {
      if(!$this->getId())
      {

        //do stuff

     }
     return parent::save($conn);

    }
}
我觉得我在遵循API对签名的描述(除了奇怪的括号,我会给我一个语法错误…)

当我运行此代码时,它运行良好,但我得到以下警告:

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,并尝试使用无警告代码。这让我很烦恼。我签出了所有的信条源代码,并在上面加上了“save”(),一个接一个地尝试签名。什么都没有。第一次PHP因为我太放纵,奇怪的hu:-)?

save方法的正确签名应该是:

public function save(Doctrine_Connection $conn = null)

另请注意:在其他函数中,您可能会遇到此错误,但您需要使用函数($event)来代替上述内容。

谢谢!当然,我应该得到这个。现在,您可以在PHP中使用对象来强制执行类型(但如果我记得的话,则不是像整数这样的基本类型)。感觉PHP正试图赶上Java:-难道你不应该对这样的东西使用钩子吗?说得好。它干净多了。