你如何声明一个类属性作为一个对象?将属性声明为对象?
我想:
public $objectname = new $Object();
但没有奏效。另外,你为什么要这样做?
只是实例化该对象并使用其成员不是更好吗?
你如何声明一个类属性作为一个对象?将属性声明为对象?
我想:
public $objectname = new $Object();
但没有奏效。另外,你为什么要这样做?
只是实例化该对象并使用其成员不是更好吗?
从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;
}
}
,或者使用setter注入内部创建它。
class Foo
{
protected $bar;
public function setBar(Bar $bar)
{
$this->bar = $bar
}
}
PHP不支持对类成员的显式类型化。所以你不能说:
public Object $objectname;
如果该类Object
存在,你想它的一个实例,请尝试:
public $objectname = new Object();
这会产生一个致命错误,“常量表达式包含无效操作” – hassan 2017-02-18 07:35:45
如果你只是寻找实例化一个泛型类,你可以这样做:
$objectname = new stdClass;
我不相信你可以在属性的声明中这样做,所以你不得不只需要声明$ objectname并在构造函数中将其设置为新的stdClass。
聚集也被称为“依赖注入”,Fabien Potencier在这里有一个教程:http://fabien.potencier.org/article/11 /什么,是依赖注入 – 2010-02-05 03:28:55