Até recentemente, foi assim que criei objetos em tempo real.
$someObj = json_decode("{}");
Então:
$someObj->someProperty = someValue;
Mas agora eu vou com:
$someObj = (object)[];
Então, como antes:
$someObj->someProperty = someValue;
Obviamente, se você já conhece as propriedades e os valores, pode configurá-los como foi mencionado:
$someObj = (object)['prop1' => 'value1','prop2' => 'value2'];
NB: Eu não sei em quais versões do PHP isso funciona, então você precisa estar atento a isso. Mas acho que a primeira abordagem (que também é curta se não houver propriedades para definir em construção) deve funcionar para todas as versões que possuem json_encode / json_decode