Объявлять свойство как объект?

Как объявить свойство класса как объекта?

Я пытался:

public $objectname = new $Object(); 

Но это не сработало. Кроме того, зачем вам это делать?

Разве не лучше просто создать экземпляр этого объекта и просто использовать его членов?

Из руководства 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 } } 

Вы хотите поддержать агрегацию над композицией .

PHP не поддерживает явное типирование членов класса. Поэтому вы не можете сказать:

 public Object $objectname; 

Если Object класса существует, и вы хотите его экземпляр, попробуйте:

  public $objectname = new Object(); 

Если вы просто хотите создать экземпляр класса, который вы можете сделать:

 $objectname = new stdClass; 

Я не верю, что вы можете сделать это в объявлении свойства, поэтому вам нужно просто объявить $ objectname и в конструкторе установить его в новый stdClass.