将属性声明为对象?

你如何声明一个类属性作为一个对象?

我试过了:

public $objectname = new $Object(); 

但它没有工作。 另外,你为什么要这样做呢?

实例化这个对象并使用它的成员不是更好吗?

从类属性的PHP手册 (重点是我的):

类成员variables被称为“属性”。 您也可以使用其他术语(如“属性”或“字段”)来查看这些术语,但为了便于参考,我们将使用“属性”。 它们是通过使用public,protected或private关键字之一来定义的,后面是正常的variables声明。 这个声明可能包括一个初始化,但是这个初始化必须是一个常量值 – 也就是说,它必须能够在编译时进行评估,并且不能依赖运行时信息来评估。

要么在构造函数中创build它( 构图 )

 class Foo { protected $bar; public function __construct() { $this->bar = new Bar; } } 

或注入构造函数( 聚合 )

 class Foo { protected $bar; public function __construct(Bar $bar) { $this->bar = $bar; } } 

或使用setter注射。

 class Foo { protected $bar; public function setBar(Bar $bar) { $this->bar = $bar } } 

你想赞成聚合而不是组合 。

PHP不支持类成员的显式types。 所以你不能说:

 public Object $objectname; 

如果类Object存在,并且您想要它的一个实例,请尝试:

  public $objectname = new Object(); 

如果你只是想实例化一个generics类,你可以这样做:

 $objectname = new stdClass; 

我不相信你可以在属性的声明中做到这一点,所以你只需要声明$ objectname,并在构造函数中将它设置为新的stdClass。