Задать вопрос
@matperez

Можно ли как-то заставить PHP учитывать, что метод описанный в интерфейсе реализован в магическом методе?

Здравствуйте!

Я написал некий класс и решил требования к нему описать в виде интерфейса. Часть требуемых методов я реализовал напрямую, а часть уже была реализована через поведение Yii. В IDE я могу это учесть через PHPDOC @method, но сам PHP на это кладет болт и заявляет, что для полноценной работы недостающие методы таки надо реализовать. В итоге я получаю ошибку: Class contains N abstract methods and must therefore be declared abstract or implement the remaining methods

Можно ли как-то заставить PHP поверить, что метод описанный в интерфейсе реализован через магию?
  • Вопрос задан
  • 400 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@matperez Автор вопроса
В общем, как сказал Сергей Протько, методы интерфейса обязательно должны быть реализованы явно. Встречал в интернете вариант, где для каждого "магического" метода делают заглушку через return $this->__call(__FUNCTION__, func_get_args()), но это как-то не фонтан как и необходимость выдумывать новое имя для метода. Решил через Trait со всеми недостающими методами, а внутри трейта исходные методы вызываю через parent::methodName().
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
если вы реализовываете интерфейс, то вы должны реализовать все методы, объявленные в нем
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы