使用类实例作为另一个类的属性


Use a Class instance as an property of Another Class

我想创建一个类,其中另一个类的实例用作属性。 像这样:

class person
{
    var $name;
    var $address;
}
class business
{
    var $owner = new person();
    var $type;
}

当然,这是行不通的,我已经尝试了一些变化。 我在谷歌搜索中找到的所有内容都只引用嵌套类定义(class a { class b{ } })。

是否可以将一个类实例放在另一个类中? 如果没有,是否有合理的解决方法?

不能将类初始化为属性/属性/字段声明的一部分。

从 PHP 属性文档:

[属性] 声明可以包含初始化,但此初始化必须是常量值,也就是说,它必须能够在编译时计算,并且不得依赖于运行时信息才能进行评估。

如果需要新实例具有包含类实例的属性,则需要在构造函数中分配它:

class business {
    public $owner;
    public function __construct() {
        $this->owner = new person();
    }
}

顺便说一句,一定要使用可见性关键字(publicprotectedprivate)而不是var

class person
{
    public $name;
    public $address;
}
class business
{
    public $owner;
    public $type;
    public function __construct()
    {
        $this->owner = new person();
    }
}

如果你打算调用其他类方法,可以尝试这样使用:

class person
{
    public $name;
    public $address;
}
class business {
 public $owner;
    function __construct( $obj ) {
        $this->owner = $obj;
    }
}   
$a = new person();
$b = new business($a);