Я соглашаюсь со штуковиной, преимущество так, Вы не должны переименовывать его при переименовании класса. DRY.
Точно так же, если у Вас есть дочерний класс, можно звонить
parent::__construct()
для вызова родительского конструктора. Если далее вниз дорожка, Вы изменяете класс дочерний класс, наследовалась, Вы не должны изменять вызов конструкции на родителя.
кажется, что мелочь, но пропускающий менять имя вызова конструктора на Ваши родительские классы могла создать тонкий (и не настолько тонкая) ошибки.
, Например, если Вы вставили класс в свой heirachy, но забыли изменять вызовы конструктора, Вы могли, начал вызывать конструкторов бабушки и дедушки вместо родителей. Это могло часто вызывать нежелательные результаты, которые могло бы быть трудно заметить.
Также примечание, что
С PHP 5.3.3, методов с тем же именем, поскольку последний элемент namespaced имени класса больше не будут рассматривать как конструктора. Это изменение не влияет на non-namespaced классы.
__construct
был представлен в PHP5. Это - способ, которым Вы, как предполагается, делаете это теперь. Я не знаю ни о каком преимущества по сути, все же.
Из руководства PHP:
Для назад совместимости, если PHP 5 не может найти __ конструкция () функция для данного класса, это будет искать функцию конструктора старого стиля, под названием класс. Эффективно, это означает, что единственный случай, который имел бы проблемы совместимости, - то, если бы класс имел метод, названный __ конструкция (), который использовался для различной семантики
, Если бы Вы находитесь на PHP5, то я рекомендовал бы использовать __construct
, чтобы не заставлять PHP посмотреть в другом месте.
Основное преимущество, которое я вижу __ конструкция, то, что Вы не должны переименовывать своего конструктора при изменении имени класса.
Лучшее преимущество использования __contruct()
вместо ClassName()
при расширении классов. Намного легче звонить parent::__construct()
вместо parent::ClassName()
, поскольку это является допускающим повторное использование среди классов, и родитель может быть изменен легко.
В PHP 5 преимущество состояло бы в том, что производительность будет лучше. Это будет искать конструктора под названием __construct
первый и если это не находит, что, будет искать конструкторов под названием className
. Таким образом, если это находит конструктора именем __construct
, это не должно искать конструктора именем className
.
Прямая совместимость. Всегда существует шанс, что унаследованный код, который это оставляют на языке для назад пользы совместимости, будет удален в будущей версии.