====== API шаблона на этапе выполнения ====== Класс **WactTemplate** - это потомок от **WactRuntimeComponentDatasource**, который в свою очередь наследуется от **WactRuntimeComponent**. Поэтому он поддерживает методы активного компонента и методы контейнера данных, а также набор других, упрощающих работу с шаблоном на этапе выполнения. Мы опишем наиболее важные методы этих трех классов. ===== WactRuntimeComponent ===== Методы класса WactRuntimeComponent (limb/wact/src/components/WactRuntimeComponent): * **getId()** - возвращает идентификатор активного компонента. * **addChild($child)** - добавить новый дочерний элемент. * **findChild($ServerId)** - возвращает дочерний активный компонент с указанным идентификаторов. Поиск ведется вниз по иерархии без ограничений. * **findChildByClass($class)** - возвращает дочерний активный компонент указанного класса. Поиск ведется вниз по иерархии без ограничений. * **findParentByClass($class)** - возвращает ближайший родительский активный компонент указанного класса. Поиск ведется вверх вплоть до корневого элемента. * **getRootComponent($item)** - возвращает ссылку на корневой активный компонент. Этот метод может использовать внутри других классов активных компонентов. * **getDatasource()** - возвращает ссылку на ближайший вверх по иерархии контейнер данных * **getDatasourceComponent()** - возвращает ссылку на ближайший вверх по иерархии активный компонент с контейнером данных * **setChildDataSource($ServerId, $datasource)** - ставит обычный контейнер данных указанному дочернему компоненту. * **setChildDataSet($ServerId, $datasource)** - ставит списковый контейнер данных (итератор) указанному дочернему компоненту Также внутри объекта доступны атрибуты: * children - все дочерние элементы * parent - родительский элемент * id - идентификатор элемента ===== WactRuntimeDatasourceComponent ===== Класс WactRuntimeDatasourceComponent - это активный компонент с обычным контейнером данных. Методы WactRuntimeDatasourceComponent: * **set($field, $value)** - ставит переменную в контейнер данных * **get($field)** - возвращает значение переменной из контейнера данных * **registerDataSource($datasource)** - заменяет текущий контейнер данных новым. Также WactRuntimeDatasourceComponent поддерживает интерфейс **ArrayAccess**. Внутри WactRuntimeDatasourceComponent доступен атрибут **$datasource**. ===== WactTemplate ===== Методы класса WactTemplate: * **display()** - выполняет шаблон и делает echo его код. * **capture()** - выполняет шаблон и вызвращает его код. * **castToIterator($value)** - статический метод, переводит переменную в итератор. Внутри WACT массивы всегда проходят через этот метод. * **makeObject($DataSource, $name)** - статический метод, переводит набор данных в объект класса WactArrayObject, если необходимо. Конструктор WactTemplate получает следующие параметры: * template_path - путь до шаблона * $config - объект, поддерживающий интерфейс **WactTemplateConfig**. Если параметр не указан, то используется WactDefaultTemplateConfig, работающий на основе файла setting.ini (см. раздел [[limb3:ru:packages:wact:how_to_run_wact_only|"Запуск WACT-шаблона. Только WACT-пакет"]]). * $locator - объект, поддерживающий интерфейс **WactTemplateLocator**. Если параметр не указан, то используется WactDefaultTemplateLocator