До недавнего времени я создавал объекты на лету.
$someObj = json_decode("{}");
Тогда:
$someObj->someProperty = someValue;
Но теперь я иду с:
$someObj = (object)[];
Тогда как раньше:
$someObj->someProperty = someValue;
Конечно, если вы уже знаете свойства и значения, вы можете установить их внутри, как уже упоминалось:
$someObj = (object)['prop1' => 'value1','prop2' => 'value2'];
NB. Я не знаю, с какими версиями PHP это работает, поэтому вам следует помнить об этом. Но я думаю, что первый подход (который также является коротким, если нет свойств для установки в конструкции) должен работать для всех версий, которые имеют json_encode / json_decode