我在某处读到了
构造函数的参数可以是除它所属的类之外的任何类型。
所以
$obj = new class_name(new class_name());
这是PHP允许的吗?
答案 0 :(得分:4)
好了,我们为什么不运行代码并逐步完成所发生的事情呢?
因此,如果类接受构造函数的参数,这意味着它必须看起来像这样:
class A {
public function __construct($parameter){
}
}
现在我们创建一个它的实例:
$o = new A(new A);
但是这个论点还需要一个实例:
$o = new A(new A(new A));
但是这个论点还需要一个实例:
$o = new A(new A(new A(new A)));
但是这个论点还需要一个实例:
$o = new A(new A(new A(new A(new A))));
但是这个论点还需要一个实例:
$o = new A(new A(new A(new A(new A(new A)))));
但是这个论点还需要一个实例:
$o = new A(new A(new A(new A(new A(new A(new A))))));
......现在等我输了。
救援来了"default argument values"!正如VolkerK在评论中已经指出的那样并非不可能,你只需确保以某种方式在某个地方结束链条。而且不知何故有默认值,例如
class A {
public function __construct($parameter = NULL){
}
}
因此,使用默认值,当你没有将另一个实例传递给构造函数时,链将结束,它将采用默认值,这里将是NULL
。