Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
  • Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Веб [PHP] [Templating] Шаблонизатор Улитка

fastin

Активный участник
Пользователь
Баллы
78
687474703a2f2f64617966756e2e72752f77702d636f6e74656e742f75706c6f6164732f323031322f30312f32373570782d476172792d737465702d537465702d352e6a7067

Snail
​
Сегодня я решил опубликовать своё детище на РБ. Собсна это простой шаблонизатор с названием "Snail", функционал которого вы сможете посмотреть на репозитории.

Все файлы лежат на GitHub'e и Packagist(Для тех кто пользуется composer'ом). Документация находится на Github'e.
Распространяется по MIT License.
GitHub
Если вам интересна скорость загрузки страницы, то добавьте в шаблон переменную {$time}.

Всем доброго бобра! И пони. Ладно, котика тоже.
 
Последнее редактирование:

Резерв
​
 
Последнее редактирование:
Достойный шаблонизатор :good:
 
Мы сделаем вам фореч в форече в форече, чтобы у вас был фореч, когда он в форече в форече
 
Это скорее ты поясни, зачем ты мультициклы сделал или тебе объяснить, как они работают?
Если тебе помогает владлен_198, тогда ясно откуда такое потекло...
 
Это скорее ты поясни, зачем ты мультициклы сделал или тебе объяснить, как они работают?
Если тебе помогает владлен_198, тогда ясно откуда такое потекло...
Он мне не помогал.
Лучше объясни.
Ты это в компиляторе нашел?
 
https://github.com/fastin/Snail/blob/master/lib/Snail/Compiler.php
Начиная со строки 114
Что тут непонятного? Это элементарные понятия комбинаторики. Запускается цикла, который запускает другой цикл, который в свою очередь запускает еще один. Допустим, цикл верхнего уровня запустится только 3 раза, а следующие по иерархии еще 3 и третий, тоже 3 раза т.е. всего за цикл выполнится 19683(3^9) операции. Представь, если будет не 3, а скажем 8...
 
Ок сейчас поставлю гляну :D
Можно было сделать подгрузку 1 файлом.
PHP:
    public function assign($name, $value) {
        $this->_vars[$name] = $value;
    }
Можно было бы доделать чтобы принимать массив или как обычно у меня оно так устроенно.
PHP:
        public function vars ($arr,$var = null) {
            if (is_array($arr)) {
                foreach ($arr as $k => $v) $this->vars[$k] = $v;
            } else $this->vars[$arr] = $var;
        }
PHP:
    public function display($tmpl)
    {
        $this->_time = round(microtime() - $this->_time, 4);
        $this->assign("time", $this->_time);
       
        echo $this->fetch($tmpl);
    }
Можно было бы сделать переменную с компилированным шаблоном, так как сразу вывод echo не лучший вариант, может я хочу заюзать ajax и выдать json и не только html.
PHP:
    public function setPath($path)
    {
        $this->_path = $_SERVER['DOCUMENT_ROOT'].$path;
    }
Может лучше не использовать $_SERVER['DOCUMENT_ROOT']. Так как я хотел изначально заюзать так чтобы указать путь, а то есть некоторые хосты которым лучше указывать полный путь, да и то быстрее.
upload_2015-6-3_12-1-40.png
Я просто изначально написал так :D. А потом нашёл что юзается $_SERVER['DOCUMENT_ROOT'].
Ничоси сколько у тебя циклов , c регулярочками :D. 2 цикл хоть останавливается.
 
Это элементарные понятия комбинаторики.
Допустим, цикл верхнего уровня запустится только 3 раза, а следующие по иерархии еще 3 и третий, тоже 3 раза т.е. всего за цикл выполнится 19683(3^9) операции. Представь, если будет не 3, а скажем 8...
Немедленно спешу не согласиться с этим, 81 раз.
 
Update:
  • Убран лишний foreach
  • Теперь задавать переменные можно в виде массива. Делается это так:
    PHP:
    $snail->assign(array("title" => "Snail Templater"))
  • Также теперь можно выбрать, возвращать шаблон или нет. Делается это так:
    PHP:
    $snail->display("main.tpl", false);
    echo $snail->html["main.tpl"];
  • Добавлено пару фильтров
  • Добавлен Snail_Autoloader - Автоподгрузчик
  • И другие небольшие изменения
 
Последнее редактирование:
Update:
  • Теперь можно передавать аргументы в фильтр. Делается это примерно так:
    HTML:
    {$var|e("html")}
    Это работает не во всех фильтрах(вообще не в каких :D).
  • Добавлено пару фильтров
 
Не, это я видел, интересует сравнение с другими шаблонизаторами. Можно ли его использовать в больших проектах? Компилирует ли он шаблоны в production'е?
Что мешает самому сделать бенчмарк ?)
 

Поделиться этой страницей

Назад
Верх