Подтвердить что ты не робот

Какая разница между __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");
4b9b3361

Ответ 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.