Изнанка 2.3

Изнанка — простой, но мощный ПХП движок.

Вышла версия 2.3. Увеличина производительность, добавились цикл foreach и функция throw404, убраны старые баги, функция $view->compile стала публичной.

Новое

Появился цикл foreach, который пишется проще чем в ПХП:

{{@articles as $article}}
    <h1>{{$article['title']}}</h1>
{{end}}

Появилась функция throw404(), которая делает именно то, о чём говорит её название: отправляет заголовок 404 и ставит шаблоном 404.tpl. Функция вызывается без аргументов.

Функция $view->compile($content) стала публичной. Эта функция рендерит текст как шаблон. Я использую это на страницах проектов: у проектов есть общие части (заголовок, дата, ссылка), а есть отличающиеся. Индивидуальные шаблон лежит в папке с проектом, а модуль projects получает этот файл и рендерит вот так:

$view->set('content', $view->compile(file_get_contents($path.$hurl.'.tpl')));

Изменилось

Переменные пути заменены на константы:

было

стало

$view->path

path

$view->uri

uri

Для перехода с предыдущей версии достаточно выполнить замену во всём коде сайта по шаблону, который указан выше.

Функция runModule($module) теперь принимает один аргумент — имя модуля. Это изменение совместимо с предыдущим вариантом, ничего менять не надо, но в дальнейшем модули следует вызывать в упрощённом виде:

<?php
switch(uri) {
  case '/note':
    runModule('note');
    break;
}

Данные из массивов теперь выводятся без решётки. Теперь достаточно написать имя переменной в отдельный блок и она выведется.

{{@article['title']}}

Внутренние изменения

Механизм отрисовки сильно изменён, теперь шаблоны обрабатываются построчно, из–за этого движок понимает где именно надо рендерить код и не делает лишней работы.

Построчная обработка также позволила исправить то, что меня давно бесило — съезжающие отступы в шаблонах. Теперь шаблоны выводятся так, как они написаны.

Исправлена ошибка: когда в одной строке встречалось несколько тегов Изнанки, движок мог упасть. Например, вот такой кусок кода мог положить движок:

{{for ($i=0 to count(@passed))}}{{@passed[$i]}}{{end}}

Ошибка была плавающая, появлялась не всегда и из–за этого было неспокойно. Сейчас всё работает как надо.

Ещё ужал картинки и код, теперь дистрибутив весит 9.4 килобайта.

Где скачать?

Скачать можно на странице проекта или на гитхабе.

Поделиться
Отправить
21 июня, 23:35   релиз   Изнанка