如何将类属性声明为对象?
我试过了:
public $objectname = new $Object();
但它没有用。另外,你为什么要这样做呢?
仅仅实例化该对象并使用其成员不是更好吗?
答案 0 :(得分:26)
来自PHP manual on class properties(强调我的):
类成员变量称为“属性”。您也可以使用“属性”或“字段”等其他术语来查看它们,但出于本参考的目的,我们将使用“属性”。它们通过使用public,protected或private之一,然后是普通变量声明来定义。此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能成为评估。
在构造函数(composition)
中创建它class Foo
{
protected $bar;
public function __construct()
{
$this->bar = new Bar;
}
}
或inject在构造函数(aggregation)
中class Foo
{
protected $bar;
public function __construct(Bar $bar)
{
$this->bar = $bar;
}
}
或使用二传手注射。
class Foo
{
protected $bar;
public function setBar(Bar $bar)
{
$this->bar = $bar
}
}
答案 1 :(得分:1)
如果您只是想要实例化一个泛型类,您可以这样做:
$objectname = new stdClass;
我不相信你可以在声明属性中这样做,所以你必须只声明$ objectname并在构造函数中将它设置为新的stdClass。
答案 2 :(得分:0)
PHP不支持显式输入类成员。所以你不能说:
public Object $objectname;
如果类Object
存在,并且您想要它的实例,请尝试:
public $objectname = new Object();
答案 3 :(得分:0)
您可以在构造器区域中创建一个新类,然后将其设置为新对象。
class CampaignGroupsProperty
{
public $id;
public $name;
}
class GetCampaignGroupsResponse
{
public $result;
public $resultCode;
public $campaignGroups;
public function __construct()
{
$this->campaignGroups = new CampaignGroupsProperty();
}
}
然后您可以像
那样称呼它$response = new GetCampaignGroupsResponse();
$response->campaignGroups->id = 'whatever';
$response->result=true;