我想创建一个类,其中包含另一个用作属性的类的实例。像这样:
class person
{
var $name;
var $address;
}
class business
{
var $owner = new person();
var $type;
}
当然,这不起作用,我尝试了一些变化。我在Google搜索中找到的所有内容都只引用嵌套的类定义(class a { class b{ } }
)。
是否可以将类实例放在另一个类中?如果没有,是否有合理的解决方法?
答案 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个关键字(public
,protected
,private
)而不是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);