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

Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем fastin, 2 июн 2015.

  1. Автор темы
    fastin

    fastin Активный участник Пользователь

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

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

    Всем доброго бобра! И пони. Ладно, котика тоже.
     
    Последнее редактирование: 3 июн 2015
  2. Автор темы
    fastin

    fastin Активный участник Пользователь

    Баллы:
    78
    Skype:
    the.infastin

    Резерв
     
    Последнее редактирование: 2 июн 2015
  3. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Достойный шаблонизатор :good:
     
  4. Автор темы
    fastin

    fastin Активный участник Пользователь

    Баллы:
    78
    Skype:
    the.infastin
    Спасибо :)
     
  5. Toster_tpl

    Toster_tpl Старожил Пользователь

    Баллы:
    153
    Мы сделаем вам фореч в форече в форече, чтобы у вас был фореч, когда он в форече в форече
     
  6. Автор темы
    fastin

    fastin Активный участник Пользователь

    Баллы:
    78
    Skype:
    the.infastin
    Поясни.
    @Vladlen_198, а ну быстро сюда :D
     
  7. Toster_tpl

    Toster_tpl Старожил Пользователь

    Баллы:
    153
    Это скорее ты поясни, зачем ты мультициклы сделал или тебе объяснить, как они работают?
    Если тебе помогает владлен_198, тогда ясно откуда такое потекло...
     
  8. Автор темы
    fastin

    fastin Активный участник Пользователь

    Баллы:
    78
    Skype:
    the.infastin
    Он мне не помогал.
    Лучше объясни.
    Ты это в компиляторе нашел?
     
  9. Toster_tpl

    Toster_tpl Старожил Пользователь

    Баллы:
    153
    https://github.com/fastin/Snail/blob/master/lib/Snail/Compiler.php
    Начиная со строки 114
    Что тут непонятного? Это элементарные понятия комбинаторики. Запускается цикла, который запускает другой цикл, который в свою очередь запускает еще один. Допустим, цикл верхнего уровня запустится только 3 раза, а следующие по иерархии еще 3 и третий, тоже 3 раза т.е. всего за цикл выполнится 19683(3^9) операции. Представь, если будет не 3, а скажем 8...
     
  10. Vladlen_198

    Vladlen_198 Старожил Пользователь

    Баллы:
    108
    Skype:
    ultrashock98
    Имя в Minecraft:
    UltraShock
    Ок сейчас поставлю гляну :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->_time4);
            
    $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 цикл хоть останавливается.
     
  11. Toster_tpl

    Toster_tpl Старожил Пользователь

    Баллы:
    153
    [​IMG] Что за... Мне здесь явно делать нечего.

    Отписался.
     
  12. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Немедленно спешу не согласиться с этим, 81 раз.
     
  13. Автор темы
    fastin

    fastin Активный участник Пользователь

    Баллы:
    78
    Skype:
    the.infastin
    Update:
    • Убран лишний foreach
    • Теперь задавать переменные можно в виде массива. Делается это так:
      PHP:
      $snail->assign(array("title" => "Snail Templater"))
    • Также теперь можно выбрать, возвращать шаблон или нет. Делается это так:
      PHP:
      $snail->display("main.tpl"false);
      echo 
      $snail->html["main.tpl"];
    • Добавлено пару фильтров
    • Добавлен Snail_Autoloader - Автоподгрузчик
    • И другие небольшие изменения
     
    Последнее редактирование: 3 июн 2015
  14. pyshcoder

    pyshcoder Активный участник

    Баллы:
    61
    Имя в Minecraft:
    GoshaMosunov
    Вроде неплохо. Бенчмарки есть?
     
  15. Vladlen_198

    Vladlen_198 Старожил Пользователь

    Баллы:
    108
    Skype:
    ultrashock98
    Имя в Minecraft:
    UltraShock
    {$time}
     
  16. Автор темы
    fastin

    fastin Активный участник Пользователь

    Баллы:
    78
    Skype:
    the.infastin
    Update:
    • Теперь можно передавать аргументы в фильтр. Делается это примерно так:
      HTML:
      {$var|e("html")}
      Это работает не во всех фильтрах(вообще не в каких :D).
    • Добавлено пару фильтров
     
  17. DEFKALION

    DEFKALION Активный участник Пользователь

    Баллы:
    76
    А что может ваш шаблонизатор?
     
  18. Автор темы
    fastin

    fastin Активный участник Пользователь

    Баллы:
    78
    Skype:
    the.infastin
    Читай шапку
     
  19. pyshcoder

    pyshcoder Активный участник

    Баллы:
    61
    Имя в Minecraft:
    GoshaMosunov
    Не, это я видел, интересует сравнение с другими шаблонизаторами. Можно ли его использовать в больших проектах? Компилирует ли он шаблоны в production'е?
     
  20. Vladlen_198

    Vladlen_198 Старожил Пользователь

    Баллы:
    108
    Skype:
    ultrashock98
    Имя в Minecraft:
    UltraShock
    Что мешает самому сделать бенчмарк ?)
     

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