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

时间:2014-12-17 18:06:52

标签: php class

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

class person
{
    var $name;
    var $address;
}

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

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

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

3 个答案:

答案 0 :(得分:2)

class person
{
    public $name;
    public $address;
}

class business
{
    public $owner;
    public $type;

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

答案 1 :(得分:2)

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

From the PHP Property documentation

  

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

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

class business {
    public $owner;

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

另外,请务必使用visibility个关键字(publicprotectedprivate)而不是var

答案 2 :(得分:1)

如果您打算调用其他类方法,

可能会尝试使用这样的方法:

class person
{
    public $name;
    public $address;
}

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

}   
$a = new person();
$b = new business($a);