sage
Новичок
Ошибка в пхп мане или мой глюк?
Однажды, читая ман (Classes and Objects -> Constructors), обнаружил ошибку. Приведён следующий код:
И ниже написано следующее:
Однажды, читая ман (Classes and Objects -> Constructors), обнаружил ошибку. Приведён следующий код:
PHP:
class A
{
function A()
{
echo "I am the constructor of A.<br>\n";
}
function B()
{
echo "I am a regular function named B in class A.<br>\n";
echo "I am not a constructor in A.<br>\n";
}
}
class B extends A
{
function C()
{
echo "I am a regular function.<br>\n";
}
}
// This will call B() as a constructor.
$b = new B;
Т.е. при создании нового объкта должна вызваться ф-ия конструктор базового класса A() и напечататься "I am the constructor of A." Но т.к. класс B наследует все свойста класса A, в том числе и B(), которая становится определённой (как я понимаю) в классе B, ф-ия B становится функцией конструктором класса B и соответственно при создании нового объекта должна вызываться ф-ия B (об этом также свидетельствует комментарий). Так почему же написанное ниже примера не совпадает с действительность?This is fixed in PHP 4 by modifying the rule to: 'A constructor is a function of the same name as the class it is being defined in.'. Thus in PHP 4, the class B would have no constructor function of its own and the constructor of the base class would have been called, printing 'I am the constructor of A.<br>'.