Template Toolkit(русская редакция) |
|
||
|
Template::Service |
|
ОБЗОР |
[ Индекс ] [ Модули ] [ Наверх ] |
use Template::Service; my $service = Template::Service->new({ PRE_PROCESS => [ 'config', 'header' ], POST_PROCESS => 'footer', ERROR => { user => 'user/index.html', dbi => 'error/database', default => 'error/default', }, }); my $output = $service->process($template_name, \%replace) || die $service->error(), "\n"; |
ОПИСАНИЕ |
[ Индекс ] [ Модули ] [ Наверх ] |
Модуль Template::Service реализует объектный класс для предоставления согласованной службы по обработке шаблонов. Можно задать стандартные шаблоны шапок (PRE_PROCESS) и подвалов (POST_PROCESS), которые будут добавлены в начало и конец всех обрабатываемых службой шаблонов (но никаких других шаблонов и блоков, включаемых через INCLUDE или PROCESS из шаблонов). Можно указать хеш ERROR, который переадресует службу к альтернативному файлу шаблона в случае возникновения неперхваченного исключения. Это позволяет автоматически обрабатывать ошибки службой и гарантировать правильный ответ вне зависимости от любых возникших проблем. Объект Template::Service по умолчанию создаётся модулем Template. Любые опции Template::Service можно пердать через конструктор Template new() и они будут переданы конструктору Template::Service. use Template; my $template = Template->new({ PRE_PROCESS => 'header', POST_PROCESS => 'footer', }); Аналогично, конструктор Template::Service передаст все параметры конфигурации в другие объекты по умолчанию (например, Template::Context), которые возможно потребуется инициализировать. Объект Template::Service (или подкласс/производный класс) может быть явно создан и передан конструктору Template new() в качестве значения элемента SERVICE. use Template; use Template::Service; my $service = Template::Service->new({ PRE_PROCESS => 'header', POST_PROCESS => 'footer', }); my $template = Template->new({ SERVICE => $service, }); Template::Service можно унаследовать, чтобы создать собственный обработчик службы. use Template; use MyOrg::Template::Service; my $service = MyOrg::Template::Service->new({ PRE_PROCESS => 'header', POST_PROCESS => 'footer', COOL_OPTION => 'enabled in spades', }); my $template = Template->new({ SERVICE => $service, }); Модуль Template использует производящий метод Template::Config service(), чтобы создать когда необходимо объект службы по умолчанию. Чтобы указать альтернативный модуль службы можно установить переменную пакета $Template::Config::SERVICE. Этот модуль будет загружен автоматически и его конструктор new() будет вызван производящим методом service(), когда потребуется объект службы по умолчанию. Таким образом, предыдущий пример можно переписать так: use Template; $Template::Config::SERVICE = 'MyOrg::Template::Service'; my $template = Template->new({ PRE_PROCESS => 'header', POST_PROCESS => 'footer', COOL_OPTION => 'enabled in spades', }); |
МЕТОДЫ |
[ Индекс ] [ Модули ] [ Наверх ] |
new(\%config)Конструктор new() вызывается для создания объекта Template::Service. Параметры конфигурации можно передать как ссылку на хеш или как список пар (имя => значение). my $service1 = Template::Service->new({ PRE_PROCESS => 'header', POST_PROCESS => 'footer', }); my $service2 = Template::Service->new( ERROR => 'error.html' ); Метод new() возвращает объект Template::Service (или подкласс) или undef в случае ошибки. В последнем случае соответствующее сообщение об ошибке можно получить, вызвав метод класса error() или непосредственно из переменной пакета $Template::Service::ERROR. my $service = Template::Service->new(\%config) || die Template::Service->error(); my $service = Template::Service->new(\%config) || die $Template::Service::ERROR; Конструктору можно передать следующие опции конфигурации:
process($input, \%replace)Метод process() вызывается для обработки шаблона, указаного в качестве первого аргумента $input. Это может быть имя файла, файловый дескриптор (например, GLOB или IO::Handle) или ссылка на текстовую строку, содержащую шаблон. Дополнительно можно передать ссылку на хеш, содержащий определения переменных шаблона. Метод обрабатывает шаблон, добавляя любые определенные шаблоны PRE_PROCESS или POST_PROCESS, и возвращает выходной текст. Неперехваченные исключения, сгенерированные шаблоном будут обработаны подходящим обработчиком ERROR, если он определен. Ошибки, которые возникают в шаблонах PRE_PROCESS или POST_PROCESS, или те, которые возникают в основном шаблоне, но не обрабатываются, приведут к тому, что метод вернет undef, что означает неудачное выполнение. Соответствующее сообщение об ошибке можно получить через метод error(). $service->process('myfile.html', { title => 'My Test File' }) || die $service->error(); context()Возвращает ссылку на внутренний объект контекста, который по умолчанию является экземпляром класса Template::Context. error()Возвращает самое последнее сообщение об ошибке. |
АВТОР |
[ Индекс ] [ Модули ] [ Наверх ] |
Энди Уардли (Andy Wardley <abw@andywardley.com>) |
ВЕРСИЯ |
[ Индекс ] [ Модули ] [ Наверх ] |
2.81, поставляется в составе Template Toolkit версии 2.14, дата релиза - 4 октября 2004. |
АВТОРСКИЕ ПРАВА |
[ Индекс ] [ Модули ] [ Наверх ] |
Copyright (C) 1996-2004 Andy Wardley. All Rights Reserved. Copyright (C) 1998-2002 Canon Research Centre Europe Ltd. Этот модуль является свободно-распространяемым программным обеспечением; вы можете распространять и/или модифицировать его на тех же условиях, что и Perl. |
СМОТРИ ТАКЖЕ |
[ Индекс ] [ Модули ] [ Наверх ] |