2009-12-11 62 views
0

我有一個抽象類。我正在擴大這個班級。我得到這個錯誤:PHP:這個錯誤是什麼意思?抽象方法必須兼容?

Fatal error: Declaration of Default_Model_FoobarMapper::_setClassVarsFromRow() must be compatible with that of Default_Model_AbstractMapper::_setClassVarsFromRow() in /location/to/models/FoobarMapper.php on line 3 

這通常意味着什麼?

更新:發現我的類型提示是拋出一個錯誤。你可以這樣做:

abstract class MyAbstractClass 
{ 
    abstract protected function _myFunction($array, $generic_class); 
} 

class Foobar extends MyAbstractClass 
{ 
    protected function _myFunction($array, Specific_Class $specific_class) 
    { 
     //etc. 
    } 
} 

回答

4

聲明爲_setClassVarsFromRow()的參數必須與那些在抽象的。

例如,如果您的摘要說

function _setClassVarsFromRow($arg1, $arg2 = null) 

你無法實現

function _setClassVarsFromRow($arg1, $arg2, $arg3 = null) 
+0

這是否意味着我不能使用類型提示? – Andrew 2009-12-11 01:37:52

+0

你可以。類型暗示只需要在函數的每個實現上都是相同的。 – 2009-12-11 01:41:33

+0

呃......我認爲你應該可以,只要你提示相同的類型,不應該嗎?我還沒有在PHP中使用類型提示,所以我不確定。 – 2009-12-11 01:41:56