PHP SplObjectStorage无法在类内创建

PHP SplObjectStorage无法在类内创建,php,oop,object,splobjectstorage,Php,Oop,Object,Splobjectstorage,是否可以将受保护的SplObjectStorage初始化为类中的映射?每当我尝试这个时,我似乎都会遇到一个错误。与下面的示例类似: class a { protected $a = new SplObjectStorage(); ... } 您需要使用构造函数 class a { public function __construct() { $this->a = new SplObjectStorage(); } protected $a;

是否可以将受保护的
SplObjectStorage
初始化为类中的映射?每当我尝试这个时,我似乎都会遇到一个错误。与下面的示例类似:

class a {

  protected $a = new SplObjectStorage();

  ...

}

您需要使用构造函数

class a {
  public function __construct() {
     $this->a = new SplObjectStorage();
  }

  protected $a;

  ...
}

只能使用简单类型或数组初始化类属性。能够做你想做的事情会很好,但这是PHP的另一个人为限制,你必须在构造函数中初始化它。你不能这样做,但你可能希望考虑将内部实例注入外部实例,这样它就不会硬连接。