将属性声明为对象?

2022-08-30 18:29:51

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

我试过了:

 public $objectname = new $Object();

但它没有奏效。另外,你为什么要这样做?

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


答案 1

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

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

在构造函数(组合)

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
    }
}

您希望支持聚合而不是组合


答案 2

如果您只想实例化为泛型类,则可以执行以下操作:

$objectname = new stdClass;

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


推荐