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