Начиная с PHP7 , у нас есть Анонимные классы , которые позволят вам расширить класс во время выполнения, включая установку дополнительных свойств:
$a = new class() extends MyObject {
public $property1 = 1;
public $property2 = 2;
};
echo $a->property1; // prints 1
До PHP7 такого не было.Если идея состоит в том, чтобы создать экземпляр объекта с произвольными свойствами, вы можете сделать
public function __construct(array $properties)
{
foreach ($properties as $property => $value)
{
$this->$property = $value
}
}
$foo = new Foo(array('prop1' => 1, 'prop2' => 2));
Добавить варианты по своему усмотрению.Например, добавьте проверки к property_exists
, чтобы разрешить установку только определенных членов.Я выбрасываю случайные свойства на объектах как недостаток дизайна.
Если вам не нужен конкретный экземпляр класса, но вы просто хотите получить сумку со случайным объектом, вы также можете сделать
$a = (object) [
'property1' => 1,
'property2' => 2
];
, которыйзатем даст вам экземпляр StdClass и доступ к которому можно получить как
echo $a->property1; // prints 1