Какая разница между __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");
Ответы
Ответ 1
Этот метод называется способом PHP4 для создания конструктора.
Для обратной совместимости, если PHP 5 не может найти функцию __construct() для данного класса, он будет искать функцию конструктора старого стиля по имени класса. Фактически это означает, что единственный случай, который имел бы проблемы с совместимостью, заключается в том, что у класса был метод с именем __construct(), который использовался для различной семантики.
Начиная с PHP 5.3.3, методы с тем же именем, что и последний элемент имени класса с именами, больше не будут рассматриваться как конструктор. Это изменение не влияет на классы, не содержащие имен.
http://www.php.net/manual/en/language.oop5.decon.php
Ответ 2
Функция конструктора, названная так же, как и класс, является функцией обратной совместимости для PHP4. Он не будет работать с классами с именами, поскольку PHP 5.3.3
Если присутствуют как функции __construct
, так и class-named
, в качестве конструктора используется __construct
.
Ответ 3
Разница в том, что PHP версии 5.3.3 и выше будет относиться к function foo()
как к обычному методу, а не к конструктору. Предыдущие версии будут обрабатывать его как конструктор.
Ответ 4
Разница заключается в том, что вызов конструктора с тем же именем класса устарел.
Ответ 5
Первый - это старый "php4" стиль. Это в основном то же самое, что и __construct
.