Source for file ComponentManager.class.php
Documentation is available at ComponentManager.class.php
* Класс ComponentManager.
* @copyright Energine 2006
* Менеджер набора компонентов документа.
* @var array набор компонентов
* @param Document $document
* @param Component $component
* @param string имя файла шаблона в котором находится компонент
public function addComponent(Component $component, $fileName = false) {
'component' => $component,
* Возвращает компонент с указанным именем.
* @param string $name имя компонента
* Возвращает набор компонентов по имени класса.
* @param string $className имя класса
foreach ($this->components as $componentName => $component) {
if (get_class($component['component']) == $className) {
$result[$componentName] = $component['component'];
* Загружает описания компонентов из файла шаблона(layout или content)
* @param string имя файла content'а или layout'а
* @param string имя компонента который нужно загрузить
* @return bool Возвращает флаг указівающий на то загружены ли компоненты
//проверяем существует ли такой файл
//и можно ли из него загрузить данные
$components = $file->xpath("/*/component[@name='". $onlyComponent. "']");
$components = $file->children();
//$components = $file->xpath('/*/component');
if (!empty($components)) {
foreach ($components as $componentDescription) {
* Создание компонента из XML описания
* @param SimpleXMLElement описание компонента
// перечень необходимых атрибутов компонента
$requiredAttributes = array('name', 'module', 'class');
//после отработки итератора должны получить $name, $module, $class
foreach ($requiredAttributes as $attrName) {
if (!isset ($componentDescription[$attrName])) {
$ $attrName = (string) $componentDescription[$attrName];
// извлекаем параметры компонента
if (isset ($componentDescription->params)) {
foreach ($componentDescription->params->param as $tagName => $paramDescr) {
if ($tagName == 'param') {
if (isset ($paramDescr['name'])) {
$paramName = (string) $paramDescr['name'];
$paramValue = (string) $paramDescr;
//Если в массиве параметров уже существует параметр с таким именем, превращаем этот параметр в массив
if (isset ($params[$paramName])) {
$params[$paramName] = array($params[$paramName]);
$params[$paramName] = $paramValue;
$result = new $class($name, $module, $this->document, $params);
* Возвращает набор компонентов
|