#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, методы с именами, совпадающими с последним элементом имени класса, находящимся в пространстве имен, больше не будут считаться конструкторами. Это изменение не влияет на классы, не находящиеся в пространстве имен.
Комментариев нет:
Отправить комментарий