一尘不染

声明属性为对象?

php

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

我试过了:

 public $objectname = new $Object();

但这没有用。另外,为什么要那样做呢?

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


阅读 303

收藏
2020-05-26

共1个答案

一尘不染

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

类成员变量称为“属性”。您可能还会看到使用其他术语(例如“属性”或“字段”)来引用它们,但是出于参考目的,我们将使用“属性”。它们是使用关键字public,protected或private之一定义的,后跟普通变量声明。该声明
可以包括一个初始化,但是此初始化必须是一个常量值 -也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。

要么在构造函数(composition)中创建它

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

或将其注入到构造函数中聚合

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

或使用二传手注射。

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

您想要聚合而不是合成。

2020-05-26