Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Шаблонизатор shellNet v 1.7

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Microteam
Отправлено: 05 Декабря, 2011 - 13:27:22
Post Id



Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




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

У него тоже есть свой мини-язык (как у всех шаблонизаторов).

Шаблонизатор тоже знает что такое:
-циклы
-условия
-переменные
-массивы
-подключение других шаблонов.

Ну единственный недостаток он не умеет кэшировать шаблоны, но в следующей версии я это исправлю. Или можете подправить сами.

Ну немного слов про мини-язык шаблонизатора.
Когда я создавал, шаблонизатор я не стал изобретать заново велосипед, делая непонятный мини-язык.
{if 'переменная'} код {else} код {endif} это конструкция условия. ещё можно без else
{if 'переменная'} код {endif}

Ну как есть условие с отрицанием:
{ifn 'переменная'} код {else} код {endif}

Ещё есть переменные они имеют вид: {перменная}
Ну в этой версии есть ещё и массивы: они имеют такой вид {массив#индекс}

Есть ещё цикл пока тока 1 в стиле: {foreach='массив' to='его индексы'} {endforeach}

А также я не забыл про инклюд (подключение других файлов шаблона в свой).
{include='файл.tpl'}

Ну про мини-язык я сказал все что хотел...

В архиве есть пример по использованию.

Вот ссылка: http://get[dot]microteamdev[dot]net/down[dot][dot][dot]hell_net_v17[dot]zip

Ну вообщем строго не судите, писал шаблонизатор я на PHP естественно, а отладку производил на денвере.


-----
int i = 6; ++i + i++ = ?
 
 Top
DlTA
Отправлено: 05 Декабря, 2011 - 13:38:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




как гдето было сказано "нафига делать шаблонизатор на шаблонизаторе"?!
 
 Top
Самогонщик
Отправлено: 05 Декабря, 2011 - 13:43:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




DlTA пишет:
как гдето было сказано "нафига делать шаблонизатор на шаблонизаторе"?!
Чтобы упростить себе жизнь в плане поддержки Улыбка

str_ireplace - подход не плох, ровно до тех порка пока не нужно выполнить тонны таких замен, например вывод комментариев хабра.
 
 Top
Microteam
Отправлено: 05 Декабря, 2011 - 13:46:27
Post Id



Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




DlTA пишет:
как гдето было сказано "нафига делать шаблонизатор на шаблонизаторе"?!


Я знаю что php сам явлется неплохим шаблонизатором, но он не очень-то хороший. Чтобы верстальщику сверстать шаблон ему будут нужны начальные знания php, но тем не менее пропустил где нибудь точку с запятой, то всё весь сайт не пашет. Вот для этого пишут свой шаблонизатор
(Добавление)
Самогонщик пишет:
str_ireplace - подход не плох, ровно до тех порка пока не нужно выполнить тонны таких замен, например вывод комментариев хабра.


Предлагаете использовать просто str_replace? Однако
тогда названия переменных будут регистрозависимыми

(Отредактировано автором: 05 Декабря, 2011 - 13:50:37)



-----
int i = 6; ++i + i++ = ?
 
 Top
DlTA
Отправлено: 05 Декабря, 2011 - 13:48:07
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Microteam пишет:
Чтобы верстальщику сверстать шаблон ему будут нужны начальные знания php
на это тоже был ответ "накой такие верстальщики"
 
 Top
Самогонщик
Отправлено: 05 Декабря, 2011 - 13:55:05
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




вообще не использовать replace
 
 Top
Microteam
Отправлено: 05 Декабря, 2011 - 13:56:30
Post Id



Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Самогонщик пишет:
вообще не использовать replace


Ниндзя ????

А как не использовать?

Я вот думаю, если кэшировать каждую страницу... так нагрузка существенно уменьшится...


-----
int i = 6; ++i + i++ = ?
 
 Top
Самогонщик
Отправлено: 05 Декабря, 2011 - 14:02:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




Компилирование шаблонов. Свои наработки резкому рендеру (быстрее чистого пхп, ага) могу показать вечером.
 
 Top
Microteam
Отправлено: 05 Декабря, 2011 - 14:03:54
Post Id



Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Самогонщик пишет:
Компилирование шаблонов. Свои наработки резкому рендеру (быстрее чистого пхп, ага) могу показать вечером.

Ааа я вас немного понимаю, т.е это типа хэша?))) Покажите пожааалуйста)))) Как это делать))) Улыбка


-----
int i = 6; ++i + i++ = ?
 
 Top
Мелкий Супермодератор
Отправлено: 05 Декабря, 2011 - 14:08:20
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)





Самогонщик пишет:
Чтобы усложнить себе жизнь в плане поддержки

fixed
Но не холиварим, нет Язычок


Microteam пишет:
Чтобы верстальщику сверстать шаблон ему будут нужны начальные знания php

На моей практике верстальщики не натягивают шаблоны, этим занимаются программист, которому от верстальщика приходит вёрстка страницы.
И в случае мета-языка вероятность поломать весь вид шаблона - та же.

Но не холиварим, так что умолкаю Ниндзя


-----
PostgreSQL DBA
 
 Top
Самогонщик
Отправлено: 05 Декабря, 2011 - 14:12:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




Мну нужно внимательнее исходник перечитать. Если у вас есть циклы, значит есть и компиляция. Тут я загнался.

Имея на руках подобный шаблонизатор мне пришлось решить следующие проблемы:
1. объявление функции в шаблоне.
2. быстрый вызов другого шаблона.
3. скорее всего что-то ещё.

Т.е.
1. Если объявить в шаблоне функцию, то его нельзя будет подключить повторно.
2. Если много раз подключить шаблон, то на каждое подключение потеряем по микросекунде. Тысяча комментов - 1 секунда.
 
 Top
Microteam
Отправлено: 05 Декабря, 2011 - 14:19:08
Post Id



Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Самогонщик пишет:
Мну нужно внимательнее исходник перечитать. Если у вас есть циклы, значит есть и компиляция. Тут я загнался.

Имея на руках подобный шаблонизатор мне пришлось решить следующие проблемы:
1. объявление функции в шаблоне.
2. быстрый вызов другого шаблона.
3. скорее всего что-то ещё.

Т.е.
1. Если объявить в шаблоне функцию, то его нельзя будет подключить повторно.
2. Если много раз подключить шаблон, то на каждое подключение потеряем по микросекунде. Тысяча комментов - 1 секунда.


Это вы точно сказали, не отрицаю. Но надо это исправлять, а что ж мне делать с этим всем, и не использовать replace. Это уже магия.) Радость

(Отредактировано автором: 05 Декабря, 2011 - 14:19:51)



-----
int i = 6; ++i + i++ = ?
 
 Top
Самогонщик
Отправлено: 05 Декабря, 2011 - 16:21:14
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




Если я правильно понял код, то там много плохого форматирования, громких заявлений, стилистических ошибок и мало комментариев. А ещё он работает как интерпретатор шаблона.

Я допиливал шаблонизатор попкорн, хотел связаться с автором, но так и не ответил.
Суть: мне нужны были функции в шаблонах (рекурсивный вывод) и микрошаблоны (плоть до оформления одной ссылки).

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

Для решения проблемы добавления функций в шаблон нужно было верь код, который не относится к этим функциям, обернуть в ещё одну функции. Оборачивание производилось автоматически, и такой функции выдавалось зубодробительное имя. Но другие функции шаблона засоряли глобальное пространство имён.

Тогда я обернул все функции ещё и в класс с зубодробительным именем, что за одно решило и вторую проблему: перед тем как вызывать функцию из другого шаблона производилась проверка на загруженность в память класса соответствующего этому шаблону. Если класса не было, то производилась проверка существования откомпилированного шаблона и его загрузка загрузка, а если откомпилированного шаблона, то он компилился.

Так каждый шаблон компилится ровно 1 раз при первом обращении после очистки кеша. И при генерации страницы проверка существования необходимых откомпилированных шаблонов производится не более 1 раза для каждого шаблона.

Как то так, если чего не понятно, спрашивайте.
 
 Top
Microteam
Отправлено: 05 Декабря, 2011 - 16:37:37
Post Id



Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Ну у меня тоже такая идея была, кэшировать шаблоны. Но надо уметь кэшировать, ото я встречал умельцев весь сайт кэшировать, после чего у них ничего не меняется. Попробуем)


-----
int i = 6; ++i + i++ = ?
 
 Top
PATCH
Отправлено: 27 Декабря, 2011 - 04:32:39
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




Microteam пишет:
Ну у меня тоже такая идея была, кэшировать шаблоны. Но надо уметь кэшировать, ото я встречал умельцев весь сайт кэшировать, после чего у них ничего не меняется. Попробуем)
кстати вопрос для знатоков) а что если использовать кеширование всего сайта + технологию AJAX )
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB