В чем разница между __construct и функцией с тем же именем, что и класс?

Возможный дубликат:
для чего используется функция __construct?

есть ли какая-либо разница между функцией __construct и функцией с тем же именем, что и класс?

class foo { function foo ($something){ echo "I see ".$something." argument"; } } class bar { function __construct ($something){ echo "<br /> I see ".$something." argument again"; } } $foo = new foo("foo"); $bar = new bar("bar"); 

Solutions Collecting From Web of "В чем разница между __construct и функцией с тем же именем, что и класс?"

Этот метод называется способом PHP4 для создания конструктора.

Для обратной совместимости, если PHP 5 не может найти функцию __construct () для данного класса, он будет искать функцию конструктора старого стиля по имени класса . Фактически это означает, что единственным случаем, который имел бы проблемы с совместимостью, является то, что у класса был метод с именем __construct (), который использовался для различной семантики.

Начиная с PHP 5.3.3, методы с тем же именем, что и последний элемент имени пространства имен, больше не будут рассматриваться как конструктор. Это изменение не влияет на классы, не содержащие имен.

http://www.php.net/manual/en/language.oop5.decon.php

Функция конструктора, названная так же, как и класс, является функцией обратной совместимости для PHP4. Он не будет работать с классами с именами, начиная с PHP 5.3.3

Если присутствуют функции __construct и 'class-named functions are present, then the __construct`, используется как конструктор.

Разница в том, что PHP-версия 5.3.3 и выше будет обрабатывать function foo() как обычный метод, а не конструктор. Предыдущие версии будут рассматривать его как конструктор.

Разница заключается в том, что вызов конструктора с тем же именем класса устарел.

Первый – это старый «php4» стиль. Это в основном то же, что и __construct .