Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #58, ОКТЯБРЬ 2003 г.

PHP: Бей шаблоном!

Никита "red_way" Кислицин

Xakep, номер #058, стр. 058-094-3


Любые обработчики массивов текстовой информации, косвенно или прямо, но все же используют теорию конечных автоматов. В двух словах ее можно описать следующим образом: информация обрабатывается посимвольно и на основе множества правил для различных символов или последовательностей символов "автомат" (устойчивое среди программистов выражение) переходит в различные состояния (которые обычно идентифицируются некоторой переменной). Число состояний конечно, а значит, для каждого из них можно создать еще по правилу. Так, переходя от символа к символу и из состояния в состояние, "автомат" совершает некоторые действия - при этом ему совершенно не надо держать в памяти весь текст, достаточно нескольких байт. Естественно, класс задач, решаемых таким образом, довольно узок, но все лексические обработчики так или иначе используют идеи этой теории. Более того, я уверен, библиотеки регулярных выражений функционируют как раз на базе этой теории.

Пример кода

<?

include "class.FastTemplate.php"; /* Подключаем главный файл шаблонной системы */

$tmpl=new FastTemplate("."); /* Создаем новый экземпляр класса FastTemplate */

$tpl->define(array("top" => "top.tpl", "doc"=>"doc.tpl")); /* Привязываем имена файлов к символическим именам шаблонов */

$tpl->assign(array("NAVIGATION" => "Here is menu...",

"MAIN" => "Here is text",

"NEWS" => "Here are some news...")); /* Присваиваем переменным шаблона body значения, на следующем шаге обрабатываем этот шаблон */

$tpl->parse("BODY", "doc");

$tpl->parse("TOP", "top"); /* Парсим шаблон верхнего уровня */

$tpl->FastPrint(); /* Выводим юзеру результат. Эта запись равносильна следующей:

$tpl->FastPrint(TOP), т.е. функция принимает в качестве параметра имя переменной

с результатом */

?>

Вышел PHP 4.3.3!

После долгой и изнурительной работы программистов и бета-тестеров, наконец-то вышел полноценный релиз PHP 4.3.3. Основные изменения:

* Переписаны многие функции по работе с сокетами

* Исправлено множество ошибок, приводящих к buffer overflow

* Прикручены новые версии библиотек Expat (1.95.6), PCRE (4.3), GD (2.0.15)

* Переписаны функции по работе с протоколом IMAP и некоторыми базами данных

* Исправлено более сотни разнообразных глюков :)

Итог: бета-тестеры постарались на славу. Пока слышал только положительные отзывы об этой версии, так что must have.

Назад на стр. 058-094-2  Содержание