Ошибка в пхп мане или мой глюк?

sage

Новичок
Ошибка в пхп мане или мой глюк?

Однажды, читая ман (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;
И ниже написано следующее:
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>'.
Т.е. при создании нового объкта должна вызваться ф-ия конструктор базового класса A() и напечататься "I am the constructor of A." Но т.к. класс B наследует все свойста класса A, в том числе и B(), которая становится определённой (как я понимаю) в классе B, ф-ия B становится функцией конструктором класса B и соответственно при создании нового объекта должна вызываться ф-ия B (об этом также свидетельствует комментарий). Так почему же написанное ниже примера не совпадает с действительность?
 

neko

tеam neko
и вправду странный язык :-/
вообще-то должен вызываться сначала конструктор A, а потом конструктор B (в данном случае он пустой)

а че ты тему в оффтопике создал?
 

fixxxer

К.О.
Партнер клуба
По-моему, то, что ты оформил тэгами [quоte], совпадает с действительностью на 100%. ;)
 

sage

Новичок
fixxxer
согласен, совпадает всё, кроме сл.:
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>'.

Может быть я просто немного не понимаю... Я только учусь...:)
 

neko

tеam neko
так не вызываются конструкторы базовых классов вродеж в пхп
 

sage

Новичок
т.е. почему вызывается не ф-ия конструктор базового класса, а B()???
 

neko

tеam neko
точнее вызываются только есть собственного конструктора нет
 

sage

Новичок
neko
вызываются.
"If a class has no constructor, the constructor of the base class is being called, if it exists."
 

neko

tеam neko
точнее вызываются только есть собственного конструктора нет
а должны оба вызываться :)

-~{}~ 16.08.04 04:22:

fixxxer
в любой четверке так
незнаю что там в 5том сделали
 

fixxxer

К.О.
Партнер клуба
Хех. В пятерке А() вызывается.

Интересная информация кстати =)
 
Сверху