将属性声明为对象?
你如何声明一个类属性作为一个对象?
我试过了:
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。