• Шаблонизатор BlackTiger :: демон для работы с nginx

  • Просто прекрасные чужие стихи


  • Расскажу ка немного про алгоритм работы шаблонизатора, ну и сразу к примерам, а то мало что из этого всего можно сразу понять.

    При каждом пользовательском запросе вызывается функция Core::init($count,$dbh), в зависимости от набора параметров исполняются следующие процедуры:
    – инициализация экземплеров класса Core и установка значений по умолчанию.
    – обработка POST, GET и Cookie параметров.
    – всегда исполнятся функция Core::Init::z_doc_init().
    – метод $obj->_pre_processing() исполняет функции из модуля Core::Processing в зависимости от набора условий.
    – в зависимости от маски урла, метод $obj->_process_switch() определяет какая из функций модуля Core::Init будет исполнена.
    Случай, когда маске урла не будет найдено соответствия считается исключительным.
    – метод $obj->_post_processing() исполняет функции из модуля Core::Processing в зависимости от набора условий.
    – в зависимости от маски урла будет выбран шаблон для генерации ответа. В случае если шаблон не указан, ответ должен быть свофрмирован одной и предшествующих функций.

    После того, как мы сохранили шаблон, нужно его скомпилировать. Для этого переходим в директорию bin, и запускаем там скрипт ./generator. На экран выведутся шаблоны, которые были скомпилированы.
    Помните, этот скрипт нужно запускать после каждого изменения в шаблон. Да, неудобно в разработке тыкать его постоянно, зато в бою легче и быстрее.


    Ну как же не начать с 'Hello, world!'
    Редактируем файл конфигурации bin/Core/Config.pm

    @switch = (
    	{
    		'mask'	=> [ '^/$','^/hello/?' ],
    		'func'	=> 'hello',
    		'tmpl'	=> "tpl_hello"
    	}
    );

    Создаем шаблон страницы tpl/hello.htm

    <h2>Hello World!!!</h2>
    <h4>Now time: {#time}</h4>

    Не забываем перейти в директорию bin и запустить там скрипт generator

    zaur ~ $ cd /Users/zaur/www/blacktiger/bin/
    zaur ~ $ ./generator
    	tpl/hello.htm
    Time left: 0,0064 sec

    Описываем функцию обработчик для заданного набора масок bin/Core/Init.pm

    sub z_hello {
    	my $obj = shift;
    	my ($irow,$prm,$cookie) = @{ $obj->{'irow'} }{qw( doc prm cookie )};
    	$irow->{time} = $obj->timef('%DD %Mri %YYYY %hh:%mm');
    	return undef;
    }

    Ну а теперь любуемся результатом работы в браузере по урлам
    http://blacktiger/
    http://blacktiger/hello/

    Hello World!!!
    Now time: 28 Мая 2010 00:41





















  • Шаблонизатор BlackTiger :: демон для работы с nginx

  • Просто прекрасные чужие стихи