我们可以在对象调用中传递一个对象作为参数吗


Can we pass an object as an argument in object call?

我在某处读到

构造函数的参数可以是任何类型,但它所属的类的参数除外。

所以

$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