Пустой конструктор PHP - PullRequest
       1

Пустой конструктор PHP

10 голосов
/ 06 октября 2011

Просто интересно, лучше ли определить пустой конструктор или оставить определение конструктора полностью в PHP?У меня есть привычка определять конструкторы только с return true;, даже если мне не нужно, чтобы конструктор что-то делал - просто из соображений завершения.

Ответы [ 5 ]

10 голосов
/ 06 октября 2011

Если вам не нужен конструктор, лучше не указывать его, нет необходимости писать больше кода.Когда вы пишете, оставьте это пустым ... возвращать true не имеет смысла.

6 голосов
/ 23 марта 2012

Между ними есть разница: если вы пишете пустую функцию __construct(), вы перезаписываете любую унаследованную __construct() из родительского класса.

Так что, если она вам не нужна, и вы делаетене хотите явно переписывать родительский конструктор, вообще не пишите.

5 голосов
/ 06 октября 2011

EDIT:

предыдущий ответ больше не действителен, поскольку PHP теперь ведет себя как другие языки программирования. конструкторы не являются частью интерфейсов. поэтому теперь вы можете переопределить их так, как вам нравится, без каких-либо проблем

единственное исключение из этого:

interface iTest
{
    function __construct(A $a, B $b, Array $c);
}

class Test implements iTest
{
    function __construct(A $a, B $b, Array $c){}
    // in this case the constructor must be compatible with the one specified in the interface
    // this is something that php allows but that should never be used
    // in fact as i stated earlier, constructors must not be part of interfaces
}

ПРЕДЫДУЩАЯ СТАРАЯ, НЕ ДЕЙСТВИТЕЛЬНАЯ-ЛЮБОЙ ОТВЕТ:

есть важное различие между пустым конструктором и вообще без конструктора

class A{}

class B extends A{
     function __construct(ArrayObject $a, DOMDocument $b){}
}

VS

class A{
     function __construct(){}
}
class B extends A{
    function __construct(ArrayObject $a, DOMDocument $b){}
}

// error B::__construct should be compatible with A constructor
2 голосов
/ 06 октября 2011

Вы должны определять пустой конструктор, только если ваш объект никогда не должен создаваться.Если это так, сделайте __construct() приватным.

1 голос
/ 06 октября 2011
Конструктор

всегда возвращает экземпляр класса, в котором он определен. Следовательно, вы никогда не используете «return» внутри конструктора. Наконец, лучше не определять его, если вы не собираетесь его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...