Страницы

Поиск по вопросам

суббота, 11 апреля 2020 г.

Почему 1010 PHP

#php

                    
Почему выводит 1010? 

c;
    }
}

class B extends A{
    public $c = 10;

    public function b(){
        echo $this->c.$this->a();
    }
}

$obj = new a();
$obj->a();
?>

    


Ответы

Ответ 1



В php4, чтобы задать конструктор нужно было создать метод, совпадающий с именем класса class MyClass { function MyClass(){} } Эта конструкция была сохранена в php5 для обратной совместимости. http://php.net/manual/ru/language.oop5.decon.php В целях обратной совместимости, если PHP 5 не может обнаружить объявленный метод __construct() и этот метод не наследуется от родительских классов, то вызов конструктора произойдет по устаревшей схеме, через обращение к методу, имя которого соответствует имени класса. Может возникнуть только одна проблема совместимости старого кода, если в нём присутствуют классы с методами __construct(), использующиеся для других целей. В отличие от других методов, PHP не будет генерировать ошибку уровня E_STRICT, если __construct() будет перекрыт методом с другими параметрами, отличными от тех, которые находятся в родительском __construct(). Начиная с версии PHP 5.3.3, методы с именами, совпадающими с последним элементом имени класса, находящимся в пространстве имен, больше не будут считаться конструкторами. Это изменение не влияет на классы, не находящиеся в пространстве имен.

Комментариев нет:

Отправить комментарий