stdClass позволяет создавать (по существу) объекты без типов.Например:
$object = (object) array(
'name' => 'Trevor',
'age' => 42
);
Как показано здесь, самым быстрым способом создания объекта stdClass является приведение ассоциативного массива.Для нескольких уровней вы просто делаете то же самое внутри, как это:
$object = (object) array(
'name' => 'Trevor',
'age' => '42',
'car' => (object) array(
'make' => 'Mini Cooper',
'model' => 'S',
'year' => 2010
)
);
Другой метод - преобразовать ассоциативный массив в объект впоследствии с помощью рекурсивной функции.Вот пример.
function toObject(array $array) {
$array = (object) $array;
foreach ($array as &$value)
if (is_array($value))
$value = toObject($value);
return $array;
}
// usage:
$array = // some big hierarchical associative array...
$array = toObject($array);
Это полезно, когда вы не тот, кто создает ассоциативный массив.
К сожалению, даже если PHP 5.3 поддерживает анонимные методы, вы не можете поместить анонимный методв класс stdClass (хотя вы можете поместить его в ассоциативный массив).Но это не так уж плохо;если вам нужна функциональность, вам действительно следует создать класс.