Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Шаблонность в php
цитата
04/07/07 в 23:57
 _s_[sov]
Драсти! Вот пытаюсь разобраться с шаблонностью в php, попробовал накидать следующий код. Кто что скажет... (прошу строго не судить)

Код:

(!file_exists("./dis.php")) ? die ("Нет шаблона!");
$arr  = array("ya.ru", "rambler.ru");
$str  = file_get_contents("./1.txt");
$file = file_get_contents("./dis.php");
function sov($up, $body, $foot){
   global $file, $arr;
   $lin = "";
   for ($i=0; $i<count($arr); $i++){
      $lin .= "<a href='http://".$arr[$i]."'>".$arr[$i]."</a><br>";
      }
$data = str_replace("#title#",   $up ,  $file);
$data = str_replace("#body#",    $body, $data);
$data = str_replace("#url#",     $lin,  $data);
$data = str_replace("#footer#",  $foot, $data);
return $data;
}
echo sov("title", $str, "footer");


Заранее пасип icon_smile.gif

Последний раз редактировалось: _s_[sov] (08/07/07 в 07:56), всего редактировалось 3 раз(а)
цитата
05/07/07 в 00:00
 ibiz
а насчет чего ты хочешь услышать? icon_smile.gif
цитата
05/07/07 в 00:00
 Pentarh
Не мучайся... http://smarty.php.net
цитата
05/07/07 в 00:02
 _s_[sov]
Не, про смарти я знаю. Мне бы хотелось самому написать класс. Дак услышать о том в верном ли я направлении о представлении шабонности?
цитата
05/07/07 в 00:11
 Pentarh
Если смарти знаешь, следовательно ты должен иметь представление о шаблонности

Если так уж очень охота секса, поебись с XML-XSLT трансформациями
цитата
05/07/07 в 00:14
 _s_[sov]
Смарти в процессе изучения. Вот вчера заинсталил, чуток поразбирался, нада бы исчо поковыряться с ним. А так на первый взгляд штука довольно неплохая.
Ну с xml+xslt я уже тоже попробовал поковыряться, могу сорцы выложить icon_smile.gif
цитата
05/07/07 в 01:33
 Cibtor
Не помню кто сказал: Наш человек так устроен, что ему проще чем потратить 3 дня на изучение чужого - за месяц написать свое.
цитата
05/07/07 в 10:06
 kot_murkin
Смарти помоему выходит под лицензией gpl, а значит все продукты которые его используют должны быть тоже gpl? а значит коммерческий продукт на основе его не сделаешь?
цитата
05/07/07 в 10:12
 ibiz
kot_murkin писал:
Смарти помоему выходит под лицензией gpl, а значит все продукты которые его используют должны быть тоже gpl? а значит коммерческий продукт на основе его не сделаешь?


так ведь делают же
в шаблонности под себя надо копать в направлении быстродействия кода
цитата
05/07/07 в 10:19
 Alexandur
на базе gpl-скриптов полно коммерческих решений.
да и вообще, есть linux gpl и есть redhat
цитата
05/07/07 в 10:20
 Alexandur
_s_[sov] писал:

Заранее пасип icon_smile.gif

рекомендую поковырять http://www.phpxtemplate.org/WhoUsesXTemplate
цитата
05/07/07 в 10:53
 xreload
Автор, судя по твоим вопросам и коду , лучше используй smarty, хотя если сделаешь очередной кривой велосипед, то некто особо не огорочится.
цитата
05/07/07 в 11:40
 samedi
Долго смотрел на строку
Код:
(!file_exists("./dis.php")) ? die ("Нет шаблона!") : true;


Так делать уже не модно?
Код:
if (!file_exists('dis.php')) die ('Нет шаблона!');


Ещё какая-то интересная логика
1. сначала прочитать файл в строку
2. потом проверить его существование
3. если файла не было - убиться об стену
цитата
05/07/07 в 12:37
 _s_[sov]
samedi писал:


Ещё какая-то интересная логика
1. сначала прочитать файл в строку
2. потом проверить его существование
3. если файла не было - убиться об стену


Чет действительно я тут логику нарушил icon_smile.gif
цитата
05/07/07 в 12:52
 Stek
Цитата:
да и вообще, есть linux gpl и есть redhat

redhat кстати свою сборку предоставляет в сырцах открыто, продается именно скомпилированный вариант.
цитата
05/07/07 в 12:55
 janso
Цитата:
Дак услышать о том в верном ли я направлении о представлении шабонности?


Не в верном. Шаблонизаторы такого типа как у тебя неудобны в реальных сложных проектах. Да к тому же тормозны.

Используй лучше какой-нибудь популярный шаблонизатор.

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

Я кодил шаблонизатор на php и сейчас он вполне успешно работает в одном проекте под очень большой нагрузкой (а если прекомпилированное состояние шаблона хранить в memcached, а не на диске, так вообще летать будет). Для сравнения, smarty работает медленнее процентов на 30-50%.
цитата
05/07/07 в 13:36
 xreload
kot_murkin писал:
Смарти помоему выходит под лицензией gpl, а значит все продукты которые его используют должны быть тоже gpl? а значит коммерческий продукт на основе его не сделаешь?


прочитай лицензию и не пиши бред...
цитата
06/07/07 в 21:12
 weely6
Скажи для чего тебе это надо, каких размеров проект?
Я так не заябываюсь и не придумываю велосипед, если просто сайтец какой нить не сложный делаю обычными инклюдами.
include("header.inc.php");
include("center.inc.php");
include("footer.inc.php");

и потом уже в зависимости от того что надо выдать кручу верчу,
если что то посерьёзнее, на много пользователей рассчитано, то юзаю Смарти. Может и есть чего получше но смарти пока не подводил, просто его тоже надо правильно настраевать.
цитата
06/07/07 в 22:12
 _s_[sov]
Да это я просто для себя пишу. на инклудах я уже написал, хочется чего то более реального. А смарти да, штука хорошая. Поэтому разбираюсь с ней тоже.
цитата
07/07/07 в 03:04
 Teacher-X
Смарти хорош со всех сторон, и аццки быстр и дьявольски умен icon_smile.gif
Да я и сам когда-то писал шаблонизатор (это вообще всенародный фетиш, шаблонизаторы писать, каждый новичок считает своим долгом изобрести очередной велик), так же как у всех он работает быстрее смарти, и я его даже юзаю временами. Но такого симбиоза возможностей и скоростей как у смарти, нет ни у одного другого шаблонизатора.
Совет топикстартеру: определись четко с необходимым функционалом, но при этом постарайся удержать амбиции и не задирай уровень абстракции на недостижимые высоты, иначе толку не будет. Ещё важный момент в шаблонизаторостроительстве - не использовать регулярки, это - зло.
цитата
07/07/07 в 12:00
 janso
Цитата:
Ещё важный момент в шаблонизаторостроительстве - не использовать регулярки, это - зло.

Это почему это? icon_smile.gif
Разбирать шаблон можно чем угодно. Если синтаксис не сложный, то регулярки - самое удобное. Если сложный - то конечные автоматы и т.п.
Естественно, если процесс обработки шаблона разделен на два этапа.
Один раз шаблон компилируется в некое внутреннее представления и потом всегда используется оно.
цитата
07/07/07 в 14:50
 _s_[sov]
Я в регулярках не сильно пока ориентируюсь, поэтому начинаю писать с самого простого!
цитата
07/07/07 в 16:21
 Teacher-X
janso писал:
Это почему это? icon_smile.gif
Разбирать шаблон можно чем угодно. Если синтаксис не сложный, то регулярки - самое удобное. Если сложный - то конечные автоматы и т.п.
Естественно, если процесс обработки шаблона разделен на два этапа.
Один раз шаблон компилируется в некое внутреннее представления и потом всегда используется оно.


Я именно об этом и говорю. Просто часто встречаю в скриптах регулярки, которые могут работать по несколько секунд над выполнением достаточно примитивных задач, для которых есть отличные строковые функции, скорость выполнения которых в разы выше.

Конечные автоматы вообще встречал пару раз всего в пхп-скриптах, народ как правило про них вообще не слыхивал, а про грамматики вообще молчу icon_smile.gif

Что касается компилируемых шаблонов, то не каждый шаблон можно скомпилить в статику. Например, это чрезвычайно трудно реализуемо для форумов, у которых в настройках можно указать по сколько сообщений на страницу выводить.
цитата
07/07/07 в 23:24
 ШЕФФ
$data = str_replace("#title#", $up , $file);
$data = str_replace("#body#", $body, $data);
$data = str_replace("#url#", $lin, $data);
$data = str_replace("#footer#", $foot, $data);

все это меняешь на только имена переменых должны совпадать с тем что в решетках.
$data= preg_replace("/#(\w+)#/ee", "$\\1",$data);

да и вобще логика програмы через жопу. для масивов всегда используй foreach она гораздо быстрей for

$lin.= "<a href='http://$arr[$i]'>$arr[$i]</a><br>"; проще так написать, да и пробел $lin.= между точкой и именем переменой нельзя ставить.
цитата
07/07/07 в 23:33
 Sterx
ШЕФФ писал:
да и пробел $lin.= между точкой и именем переменой нельзя ставить.

серьезно? а у меня работает так
$lin .=
Стр. 1, 2  >  последняя »


Эта страница в полной версии