•
•
•
•
При разработке расширений для Joomla - компонентов, модулей или плагинов, вы абязательно столкнетесь с объектом StdClass. Произойдет это хотя-бы потому, что все параметры настроек модуля, компонента, или плагина доступны именно в таком виде:
JParameter Object ( [_raw] => source_sec=12, 9:34, 9:35, 10 nametext=Latest template=default.php [_xml] => [_elements] => Array ( ) [_elementPath] => Array ( [0] => W:\home\localhost\www\funky_dyk\libraries\joomla\html\parameter\element ) [_defaultNameSpace] => _default [_registry] => Array ( [_default] => Array ( [data] => stdClass Object ( [source_sec] => 12, 9:34, 9:35, 10 [nametext] => Latest [template] => default.php ) ) ) [_errors] => Array ( ) )
Такую картину можно увидеть используя функцией print_r(), передав ей в качестве аргумента параметры в виде объекта, которые доступны в каждом модуле и содержатся в переменной $params.
stdClass Object ( [source_sec] => 12, 9:34, 9:35, 10 [nametext] => Latest [template] => default.php ).
StdClass не достаточно хорошо документирован и является встроенным обьектом PHP используется в Zend машине. Поэтому прямо определить класс с именем StdClass в коде своего PHP приложения вы не можете, вы можете лишь создать экземпляр класса и определить его переменные.
Но в этой статье идет речь о том как из обычного массива сформировать объект stdClass, это может понадобится в joomla, например для передачи этого объекта в качестве аргумента в функцию и дальнейшей обработки со-держащихся в нем данных.
Вот пример в котором массив приобразуеться в объект, такой пример называется - приобразование типов:
<?php 'firstname' => 'Cleverscript', 'lastname' => 'Script' ); $p = (object) $person; ?>
А этот пример содержит функцию которая приобразует многомерный массив в объект stdClass с помощью рекурсии:
<?php function arrayToObject($array) { return $array; } $object = new stdClass(); foreach ($array as $name=>$value) { $object->$name = arrayToObject($value); } } return $object; } else { return FALSE; } } ?>
<?php ); $p = arrayToObject($person); ?>
<?php // теперь вы можите использовать $p таким образом: ?>