Как Вы объявляете свойство класса как объект?
Я попробовал:
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
}
}
Вы хотите отдать предпочтение агрегации над композицией .
Если вы просто хотите создать экземпляр универсального класса, вы можете сделать:
$objectname = new stdClass;
Я не верю, что вы можете сделать это в объявлении свойство, поэтому вам нужно будет просто объявить $ objectname и в конструкторе установить для него новый stdClass.
PHP не поддерживает явную типизацию класса члены. Таким образом, вы не можете сказать:
public Object $objectname;
Если класс Object
существует, и вам нужен его экземпляр, попробуйте:
public $objectname = new Object();