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)
Другие вопросы по тегам