У меня есть дочерний класс, где я определяю статическую функцию:
class functionover
{
function override($num1, $num2)
{
$total = $num1+$num2;
}}
class childfunctionover extends functionover
{
static function override($num1, $num2)
{
$sum = $num1+$num2;
}
}functionover :: override(10, 20);
Когда я запускаю свою программу, она показывает ошибку:
Cannot make non static method functionover::override() static in class childfunctionover
Как так?
PHP довольно строг, когда мы говорим о наследовании, расширении и переопределении методов (это не функции! Не обманывайте себя function
ключевое слово.).
Если родитель имеет static
метод, то ваша переопределение может только быть static
, Вы не можете повернуть static
в non-static
,
Это работает в обе стороны. Вы не можете переопределить non-static
метод быть static
один. Это нарушит многие правила наследования.
Когда вы переопределяете методы, правила таковы:
static
или нет) должны быть сохранены. Это могут быть не все правила, которые применяются. Для получения дополнительной информации перейдите к Руководство
Либо измените метод родителя на static
или удалить static
Ключевое слово из метода ребенка.
Других решений пока нет …