PHP空构造函数

时间:2011-10-06 10:39:47

标签: php constructor

只是想知道最好定义一个空构造函数或者在PHP中完全保留构造函数定义吗?我习惯用return true;来定义构造函数,即使我不需要构造函数来做任何事情 - 只是为了完成原因。

5 个答案:

答案 0 :(得分:10)

如果您不需要构造函数,最好将其删除,不需要编写更多代码。当你写它时,把它留空......返回true是没有目的的。

答案 1 :(得分:6)

两者之间存在差异:如果编写空__construct()函数,则会覆盖父类中任何继承的__construct()

因此,如果您不需要它并且您不想显式覆盖父构造函数,请不要写它。

答案 2 :(得分:5)

编辑:

之前的答案已不再有效,因为PHP现在的行为与其他oop编程语言类似。 构造函数不是接口的一部分。因此,现在允许您按照自己喜欢的方式覆盖它们,而不会出现任何问题

唯一的例外是:

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

答案 3 :(得分:2)

如果您的对象永远不应该被实例化,那么您应该只定义一个空构造函数。如果是这种情况,请将__construct()设为私有。

答案 4 :(得分:1)

构造函数总是返回其定义的类的实例。因此,你永远不会在构造函数中使用“return”。最后,如果你没有使用它,最好不要定义它。