Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP Шаблонизатор 
:(
    Опции темы
undercloud
Дата 23.5.2016, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.5.2016

Репутация: 1
Всего: 1



Всем доброго дня! Я тут создал новый шаблонизатор для PHP http://undercloud.github.io/ant/.
Возможно кому нибудь понравится, интересно Ваше мнение, предложения, баг репорты и т.д.
PM MAIL   Вверх
EugenyPavlenko
Дата 23.5.2016, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



В чем его преимущества по сравнению с Твигом, etc ?

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM WWW   Вверх
undercloud
Дата 23.5.2016, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.5.2016

Репутация: 1
Всего: 1



Цитата(Евгений Павленко @ 23.5.2016,  17:57)
В чем его преимущества по сравнению с Твигом, etc ?

Этот ответ добавлен с нового Винграда - http://vingrad.com

Отличия конечно есть, есть встроенный итератор состояний http://undercloud.github.io/ant/#control-foreach, отдельный слой логики, HAML, JADE, встроенный валидатор-линтер, синтаксис проще - меньше нагромождения  служебных тегов,посмотрите документацию
PM MAIL   Вверх
ksnk
Дата 24.5.2016, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 3
Всего: 386



Я правильно понимаю, что в шаблонизаторе нет блоков и макросов, как в твиге или смарти? 
Наследования шаблонов тоже нет?

P.S. неправильно понимаю, наследование с блоками есть

Это сообщение отредактировал(а) ksnk - 25.5.2016, 08:12


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ksnk
Дата 25.5.2016, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 3
Всего: 386



Нормальный проект должен содержать тесты и примеры. Иначе его слишком сложно оценивать. 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Sentox
Дата 25.5.2016, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: нет
Всего: 7



Ну так Razor лучше тогда на порядок

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
ksnk
Дата 25.5.2016, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 3
Всего: 386



Sentox, Razor - это тот, который для ASP.NET? Тут, вроде, про php разговор. Хотя синтаксис, на первый взгляд, что-то общее имеет. Буковку @  smile 
Основной косяк этого шаблонизатора - выполнение "шаблонных вставок" с помощью eval'а. При таком выборе говорить о хоть о какой то скорости работы уже не приходится. Так что остается только синтаксис. Чем синтаксис лучше синтаксиса твига - не могу понять. Хотя конструкция 
{{ value or 'пусто'}} мне нравится чуть больше, чем твиговский {{value|default('пусто')}}, хотя еще больше бы нравился {{value || 'пусто'}}, по принятым в Javascript соглашениям...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
undercloud
Дата 25.5.2016, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.5.2016

Репутация: 1
Всего: 1



Цитата(ksnk @ 24.5.2016,  21:46)
Я правильно понимаю, что в шаблонизаторе нет блоков и макросов, как в твиге или смарти? 
Наследования шаблонов тоже нет?

P.S. неправильно понимаю, наследование с блоками есть

Есть определение собственных функций и расширение синтаксиса

Добавлено через 43 секунды
Цитата(Sentox @ 25.5.2016,  09:12)
Ну так Razor лучше тогда на порядок

Этот ответ добавлен с нового Винграда - http://vingrad.com

Что такое Razor?

Добавлено через 2 минуты и 19 секунд
Цитата(ksnk @ 25.5.2016,  08:18)
Нормальный проект должен содержать тесты и примеры. Иначе его слишком сложно оценивать.

В планах - сделать онлайн песочницу, а насчет тестирования, оно есть - но не привел к нужному виду и не добавил в коммит

Добавлено через 5 минут и 50 секунд
Цитата(ksnk @ 25.5.2016,  11:11)
Sentox, Razor - это тот, который для ASP.NET? Тут, вроде, про php разговор. Хотя синтаксис, на первый взгляд, что-то общее имеет. Буковку @  smile 
Основной косяк этого шаблонизатора - выполнение "шаблонных вставок" с помощью eval'а. При таком выборе говорить о хоть о какой то скорости работы уже не приходится. Так что остается только синтаксис. Чем синтаксис лучше синтаксиса твига - не могу понять. Хотя конструкция 
{{ value or 'пусто'}} мне нравится чуть больше, чем твиговский {{value|default('пусто')}}, хотя еще больше бы нравился {{value || 'пусто'}}, по принятым в Javascript соглашениям...

Насчет eval - неправильно поняли, он для исполнения строк-шаблонов объявленных в  коде
Код

$tmpl = "
@if(true)
  {{ $var }}
@endif
"

echo Ant::init()->fromString($tmpl)->draw()


Добавлено через 7 минут и 3 секунды
Цитата(ksnk @ 25.5.2016,  11:11)
 При таком выборе говорить о хоть о какой то скорости работы уже не приходится...

Шаблоны кешируются, скорость исполнения === скорость нативных php шаблонов
PM MAIL   Вверх
ksnk
Дата 25.5.2016, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 3
Всего: 386



В @if может стоять сложная конструкция, со сравнениями, скобками и так далее?



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ksnk
Дата 25.5.2016, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 3
Всего: 386



В общем - надо больше примеров. 
Иначе приходится разбираться в коде по исходникам - даже у меня заряд мазохизма иссяк  smile 

Насколько я понял - все служебные конструкции с @ тупо и цинично трансформируются строковыми заменами в соответствующие php конструкции. Получившийся файл и используется в качестве php-шаблона. Особенного анализа получившегося текста не производится. Так что несложно сломать шаблон, вставив в тело @if или @for синтаксически неверную конструкцию.
Разбираться с файлом и строкой ошибки может оказать непросто.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
undercloud
Дата 25.5.2016, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.5.2016

Репутация: 1
Всего: 1



Цитата(ksnk @ 25.5.2016,  13:59)
В @if может стоять сложная конструкция, со сравнениями, скобками и так далее?

абсолютно любая, любая вложенность конструкций

Добавлено через 2 минуты и 4 секунды
Цитата(ksnk @ 25.5.2016,  14:27)
Насколько я понял - все служебные конструкции с @ тупо и цинично трансформируются строковыми заменами в соответствующие php конструкции. Получившийся файл и используется в качестве php-шаблона. Особенного анализа получившегося текста не производится. Так что несложно сломать шаблон, вставив в тело @if или @for синтаксически неверную конструкцию.
Разбираться с файлом и строкой ошибки может оказать непросто.

Вот тут да, согласен - дебажить шаблон будет затруднительно

PM MAIL   Вверх
_zorn_
Дата 25.5.2016, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(ksnk @  25.5.2016,  18:11 Найти цитируемый пост)
{{ value or 'пусто'}}

Цитата(ksnk @  25.5.2016,  18:11 Найти цитируемый пост)
{{value || 'пусто'}}

Тоже самое же smile 
Дело только в приоритетах, но кого они волнуют на одной операции ? smile
Это я про пхп. Мы же в пхп ветке да ?  smile 

Мне наоборот в шаблонах нравится более "человечный" язык. 
Сам в твиге стараюсь использовать "is not null" вместо "!= null" например.
Ну а "|default()"... твиг более требователен к неопределенным переменным. Тут на вкус и цвет.

Цитата(undercloud @  25.5.2016,  18:18 Найти цитируемый пост)
Есть определение собственных функций и расширение синтаксиса

В твиге все это есть.

Свой велосипед это конечно хорошо... но хорошо ТОЛЬКО для саморазвития. Предлагать и не дай боже использовать в реальных проектах - однозначные проклятия от поддерживающих этот проект.
Тем более если нет реальных преимуществ.

Это сообщение отредактировал(а) _zorn_ - 25.5.2016, 16:15
PM MAIL   Вверх
ksnk
Дата 25.5.2016, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 3
Всего: 386



Цитата(_zorn_ @  25.5.2016,  16:00 Найти цитируемый пост)
Тоже самое же

Нее! Мне больше нравится javascript - синтаксис. Он, как правило, лаконичнее, хотя и не всегда очевиден.

Ну а в этом случае - такое использование or вообще может быть вредным для здоровья(как и ||), так как синтаксис выражений внутри условий - чистый php в котором or выдает логический результат а не текстовый, как в "текстовых блоках". Язык внутри шаблона должен быть одним.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
_zorn_
Дата 25.5.2016, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(ksnk @  25.5.2016,  23:55 Найти цитируемый пост)
Мне больше нравится javascript

Ты серьезно ? Вот этот вот язык который меняется каждый день и где не могут прийти к консенсусу ? И где идиотские классы через прототипы ?
Нет ты правда серьезно ? Или просто с ним не работал основательно ?
Цитата(ksnk @  25.5.2016,  23:55 Найти цитируемый пост)
Ну а в этом случае - такое использование or вообще может быть вредным для здоровья(как и ||), так как синтаксис выражений внутри условий - чистый php в котором or выдает логический результат а не текстовый

Чистый пхп никакой "логический" результат выдать не может (да здравствует динамическое преобразование типов). А что вы имели ввиду я не понял.
Но поясню свою мысль.
Что 
Код

false or die ('OLOLO');

что
Код

false || die ('OLOLO');

сработают одинаково. 
Если использовать логические операторы "просто потому что кто то так сказал" не понимая что происходит, то всегда будут притензии smile
И в вашем любимом яваскрипте все сработало бы точно так же если бы был оператор "or"
Цитата(ksnk @  25.5.2016,  23:55 Найти цитируемый пост)
Язык внутри шаблона должен быть одним.

тут согласен. Но когда один и за верстальщика и за бекендщика.... 
Но на будущее делал  для "незнакомых с твигом" верстальщиков.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Libraries | Следующая тема »


 




[ Время генерации скрипта: 0.1663 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.