只是想知道最好定义一个空构造函数或者在PHP中完全保留构造函数定义吗?我习惯用return true;
来定义构造函数,即使我不需要构造函数来做任何事情 - 只是为了完成原因。
答案 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”。最后,如果你没有使用它,最好不要定义它。