我想创建一个类,其中另一个类的实例用作属性。 像这样:
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();
}
}
顺便说一句,一定要使用可见性关键字(public
,protected
,private
)而不是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);