2012-05-28 50 views
0

我使用Zend FW 1和PHPUnit的3.5.15。PHPUnit的抱怨不兼容的靜態方法聲明

在父類中我聲明public static function _doInsert(DomainObject $object),我在子類中重寫此。

在子類中的方法簽名唯一的區別是,它暗示了一個對象,它是比DomainObject,像DomainObjectChild更具體。就我的應用程序而言,這似乎工作正常,但PHPUnit扼流器出現錯誤。它說,子類中的方法聲明應該與父類的聲明兼容。

任何想法,我的朋友光明?

回答

1

這是來自PHP的E_STRICT級別的警告,而不是PHPUnit。檢查您的CLI版本的PHP(通常具有單獨的php.ini文件)或PHPUnit配置中覆蓋的任何PHP設置的error_reporting設置。

您可以解決該問題在代碼中刪除警告,或更改PHPUnit的使用error_reporting級別。

+0

感謝蒂姆,這是即期。任何想法爲什麼這會引發E_STRICT錯誤? –

+1

我的猜測是,隨着[靜態綁定](http://php.net/manual/en/language.oop5.late-static-bindings.php)的加入,靜態方法確實可以被覆蓋,PHP會檢查簽名匹配「以防萬一」你使​​用它。 –

相關問題