Безопасно ли удалять пустую функцию в родительском классе?

У меня есть public function beforeDelete () почти в каждом классе CMS. К сожалению, некоторые умные люди до меня создали некоторых из них с ($rowId) param и некоторые из них без параметров вообще.

родитель Main_Admin_Module имеет пустое объявление функции вроде этого:

public function beforeDelete() {}

но из-за этого я получаю ошибки лайк

ERR: объявление Model_EshopCategories :: beforeDelete () должно быть
совместим с этим из Admin_Module_Main :: beforeDelete ()

потому что (очевидно) объявление с ($rowId) не совместим с (empty) один.

К сожалению, это предотвращает ответы Json, поскольку тело ответа содержит ошибку и поэтому повреждено, поэтому я хочу исправить это.

У меня вопрос: могу ли я просто избавиться от родительского метода или мне нужно переписать каждого потомка до удаления, чтобы это исправить? Я пытался сделать ($rowId = null) в родительском методе, и это не сработало.

1

Решение

Мне кажется, что базовый метод — это ненужное бремя, поскольку он ничего не делает и обеспечивает соблюдение правил, которым не могут следовать все подклассы. Особенно, если он вызывается с разными параметрами при разных обстоятельствах, этот метод не должен быть частью общего API Admin_Module_Main учебный класс.

Мое предложение будет удалить beforeDelete() метод из Admin_Module_Main,

Альтернативой, которая не требует удаления базового метода, было бы пройти через каждый подкласс Admin_Module_Main и сделать параметры необязательными (плюс код, который обрабатывает значение по умолчанию в необязательном параметре). Это может быть лучшим решением, если вы не знаете всего о вызывающих beforeDelete() метод.

0

Другие решения

Одним из решений, позволяющих избежать этой ошибки, если вы не хотите исправлять код во всех классах, является изменение уровня error_reporting. Перейдите к вашей конфигурации php.ini и обновите error_reporting таким образом, как.

error_reporting = E_ALL & ~E_STRICT

или сделать в коде

error_reporting(E_ALL ^ E_STRICT);

Уровень E_STRICT — причина, по которой вы видите это сообщение об ошибке.

-2

По вопросам рекламы [email protected]