Para responder à pergunta real:
Por que o PHP transforma o objeto JSON em uma classe?
Dê uma olhada na saída do JSON codificado, estendi um pouco o exemplo que o OP está fornecendo:
$array = array(
'stuff' => 'things',
'things' => array(
'controller', 'playing card', 'newspaper', 'sand paper', 'monitor', 'tree'
)
);
$arrayEncoded = json_encode($array);
echo $arrayEncoded;
//prints - {"stuff":"things","things":["controller","playing card","newspaper","sand paper","monitor","tree"]}
O formato JSON foi derivado do mesmo padrão do JavaScript ( ECMAScript Programming Language Standard ) e se você olhar para o formato, parece JavaScript. É um objeto JSON ( {}
= objeto ) que tem uma propriedade "stuff" com o valor "things" e tem uma propriedade "things" com seu valor sendo um array de strings ( []
= array ).
JSON (como JavaScript) não conhece arrays associativos, apenas arrays indexados. Portanto, ao codificar JSON um array associativo PHP, isso resultará em uma string JSON contendo esse array como um "objeto".
Agora estamos decodificando o JSON novamente usando json_decode($arrayEncoded)
. A função de decodificação não sabe de onde essa string JSON se originou (uma matriz PHP), então ela está decodificando em um objeto desconhecido, que está stdClass
no PHP. Como você verá, o array "coisas" de strings IRÁ decodificar em um array PHP indexado.
Veja também:
Obrigado a https://www.randomlists.com/things pelas 'coisas'