将属性声明为对象?

ajs*_*sie 17 php oop class

如何将类属性声明为对象?

我试过了:

 public $objectname = new $Object();
Run Code Online (Sandbox Code Playgroud)

但它没有用.另外,你为什么要这样做呢?

仅仅实例化该对象并使用其成员不是更好吗?

Gor*_*don 27

关于类属性PHP手册(强调我的):

类成员变量称为"属性".您也可以使用"属性"或"字段"等其他术语来查看它们,但出于本参考的目的,我们将使用"属性".它们通过使用public,protected或private之一,然后是普通变量声明来定义.此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估.

在构造函数中创建它(组合)

class Foo
{
    protected $bar;
    public function __construct()
    {
        $this->bar = new Bar;   
    }
}
Run Code Online (Sandbox Code Playgroud)

或者在构造函数中注入它(聚合)

class Foo
{
    protected $bar;
    public function __construct(Bar $bar)
    {
        $this->bar = $bar;   
    }
}
Run Code Online (Sandbox Code Playgroud)

或使用二传手注射.

class Foo
{
    protected $bar;
    public function setBar(Bar $bar)
    {
        $this->bar = $bar
    }
}
Run Code Online (Sandbox Code Playgroud)

您希望在合成支持聚合.

  • 聚合也被称为"依赖注入",Fabien Potencier在这里有一个教程:http://fabien.potencier.org/article/11/what-is-dependency-injection (2认同)