我在某处读到
构造函数的参数可以是任何类型,但它所属的类的参数除外。
所以
$obj = new class_name(new class_name());
PHP中允许这样做吗?
好吧,我们为什么不运行代码,一步一步地了解发生了什么,好吗?
因此,如果类将一个参数带到构造函数,这意味着它必须看起来像这样:
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))))));
等等,我迷路了。
拯救的是"默认参数值"!正如VolkerK在评论中指出的那样,这并非不可能,你只需要确保你以某种方式结束了这条链条。这在某种程度上与默认值有关,例如
class A {
public function __construct($parameter = NULL){
}
}
因此,有了默认值,当你不把另一个实例传递给构造函数时,链就会结束,它会取默认值,这里是NULL
。