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.
}
}
Ответы
Ответ 1
Аргументы, которые вы заявляете для _setClassVarsFromRow()
, должны быть идентичны аргументам в тезисе.
Например, если ваш тезис говорит
function _setClassVarsFromRow($arg1, $arg2 = null)
вы не можете реализовать
function _setClassVarsFromRow($arg1, $arg2, $arg3 = null)