php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 04/07/07 в 23:57 |
Драсти! Вот пытаюсь разобраться с шаблонностью в 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");
|
Заранее пасип
Последний раз редактировалось: _s_[sov] (08/07/07 в 07:56), всего редактировалось 3 раз(а)
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 05/07/07 в 00:00 |
а насчет чего ты хочешь услышать?
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 05/07/07 в 00:00 |
|
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 05/07/07 в 00:02 |
Не, про смарти я знаю. Мне бы хотелось самому написать класс. Дак услышать о том в верном ли я направлении о представлении шабонности?
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 05/07/07 в 00:11 |
Если смарти знаешь, следовательно ты должен иметь представление о шаблонности
Если так уж очень охота секса, поебись с XML-XSLT трансформациями
|
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 05/07/07 в 00:14 |
Смарти в процессе изучения. Вот вчера заинсталил, чуток поразбирался, нада бы исчо поковыряться с ним. А так на первый взгляд штука довольно неплохая.
Ну с xml+xslt я уже тоже попробовал поковыряться, могу сорцы выложить
|
|
|
|
С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987
|
Добавлено: 05/07/07 в 01:33 |
Не помню кто сказал: Наш человек так устроен, что ему проще чем потратить 3 дня на изучение чужого - за месяц написать свое.
|
|
|
|
С нами с 26.02.06
Сообщения: 55
Рейтинг: 37
|
Добавлено: 05/07/07 в 10:06 |
Смарти помоему выходит под лицензией gpl, а значит все продукты которые его используют должны быть тоже gpl? а значит коммерческий продукт на основе его не сделаешь?
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 05/07/07 в 10:12 |
kot_murkin писал: | Смарти помоему выходит под лицензией gpl, а значит все продукты которые его используют должны быть тоже gpl? а значит коммерческий продукт на основе его не сделаешь? |
так ведь делают же
в шаблонности под себя надо копать в направлении быстродействия кода
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 05/07/07 в 10:19 |
на базе gpl-скриптов полно коммерческих решений.
да и вообще, есть linux gpl и есть redhat
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 05/07/07 в 10:20 |
|
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 05/07/07 в 10:53 |
Автор, судя по твоим вопросам и коду , лучше используй smarty, хотя если сделаешь очередной кривой велосипед, то некто особо не огорочится.
|
|
|
|
С нами с 21.06.05
Сообщения: 1788
Рейтинг: 1579
|
Добавлено: 05/07/07 в 11:40 |
Долго смотрел на строку
Код: | (!file_exists("./dis.php")) ? die ("Нет шаблона!") : true; |
Так делать уже не модно?
Код: | if (!file_exists('dis.php')) die ('Нет шаблона!'); |
Ещё какая-то интересная логика
1. сначала прочитать файл в строку
2. потом проверить его существование
3. если файла не было - убиться об стену
|
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 05/07/07 в 12:37 |
samedi писал: |
Ещё какая-то интересная логика
1. сначала прочитать файл в строку
2. потом проверить его существование
3. если файла не было - убиться об стену
|
Чет действительно я тут логику нарушил
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 05/07/07 в 12:52 |
Цитата: | да и вообще, есть linux gpl и есть redhat |
redhat кстати свою сборку предоставляет в сырцах открыто, продается именно скомпилированный вариант.
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
0
|
|
|
С нами с 16.09.05
Сообщения: 38
Рейтинг: 54
|
Добавлено: 05/07/07 в 12:55 |
Цитата: | Дак услышать о том в верном ли я направлении о представлении шабонности? |
Не в верном. Шаблонизаторы такого типа как у тебя неудобны в реальных сложных проектах. Да к тому же тормозны.
Используй лучше какой-нибудь популярный шаблонизатор.
Если все же хочется накодить свое, то копай в сторону прекомпиляции шаблонов (что б быстро было). И синтаксиса позволяющего выводить по мимо переменных массивы и обьекты (самостоятельно выводить, без нужды писать для этого свой код).
И не в коем случае не увлекайся переносом бизнес-логики в шаблоны.
В шаблоне максимум должны быть блоки с условием и повторяющиеся блоки.
Я кодил шаблонизатор на php и сейчас он вполне успешно работает в одном проекте под очень большой нагрузкой (а если прекомпилированное состояние шаблона хранить в memcached, а не на диске, так вообще летать будет). Для сравнения, smarty работает медленнее процентов на 30-50%.
|
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 05/07/07 в 13:36 |
kot_murkin писал: | Смарти помоему выходит под лицензией gpl, а значит все продукты которые его используют должны быть тоже gpl? а значит коммерческий продукт на основе его не сделаешь? |
прочитай лицензию и не пиши бред...
|
|
|
|
С нами с 12.12.06
Сообщения: 871
Рейтинг: 381
|
Добавлено: 06/07/07 в 21:12 |
Скажи для чего тебе это надо, каких размеров проект?
Я так не заябываюсь и не придумываю велосипед, если просто сайтец какой нить не сложный делаю обычными инклюдами.
include("header.inc.php");
include("center.inc.php");
include("footer.inc.php");
и потом уже в зависимости от того что надо выдать кручу верчу,
если что то посерьёзнее, на много пользователей рассчитано, то юзаю Смарти. Может и есть чего получше но смарти пока не подводил, просто его тоже надо правильно настраевать.
|
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 06/07/07 в 22:12 |
Да это я просто для себя пишу. на инклудах я уже написал, хочется чего то более реального. А смарти да, штука хорошая. Поэтому разбираюсь с ней тоже.
|
|
|
|
С нами с 27.06.07
Сообщения: 289
Рейтинг: 247
|
Добавлено: 07/07/07 в 03:04 |
Смарти хорош со всех сторон, и аццки быстр и дьявольски умен
Да я и сам когда-то писал шаблонизатор (это вообще всенародный фетиш, шаблонизаторы писать, каждый новичок считает своим долгом изобрести очередной велик), так же как у всех он работает быстрее смарти, и я его даже юзаю временами. Но такого симбиоза возможностей и скоростей как у смарти, нет ни у одного другого шаблонизатора.
Совет топикстартеру: определись четко с необходимым функционалом, но при этом постарайся удержать амбиции и не задирай уровень абстракции на недостижимые высоты, иначе толку не будет. Ещё важный момент в шаблонизаторостроительстве - не использовать регулярки, это - зло.
|
|
|
|
С нами с 16.09.05
Сообщения: 38
Рейтинг: 54
|
Добавлено: 07/07/07 в 12:00 |
Цитата: | Ещё важный момент в шаблонизаторостроительстве - не использовать регулярки, это - зло. |
Это почему это?
Разбирать шаблон можно чем угодно. Если синтаксис не сложный, то регулярки - самое удобное. Если сложный - то конечные автоматы и т.п.
Естественно, если процесс обработки шаблона разделен на два этапа.
Один раз шаблон компилируется в некое внутреннее представления и потом всегда используется оно.
|
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 07/07/07 в 14:50 |
Я в регулярках не сильно пока ориентируюсь, поэтому начинаю писать с самого простого!
|
|
|
|
С нами с 27.06.07
Сообщения: 289
Рейтинг: 247
|
Добавлено: 07/07/07 в 16:21 |
janso писал: | Это почему это?
Разбирать шаблон можно чем угодно. Если синтаксис не сложный, то регулярки - самое удобное. Если сложный - то конечные автоматы и т.п.
Естественно, если процесс обработки шаблона разделен на два этапа.
Один раз шаблон компилируется в некое внутреннее представления и потом всегда используется оно. |
Я именно об этом и говорю. Просто часто встречаю в скриптах регулярки, которые могут работать по несколько секунд над выполнением достаточно примитивных задач, для которых есть отличные строковые функции, скорость выполнения которых в разы выше.
Конечные автоматы вообще встречал пару раз всего в пхп-скриптах, народ как правило про них вообще не слыхивал, а про грамматики вообще молчу
Что касается компилируемых шаблонов, то не каждый шаблон можно скомпилить в статику. Например, это чрезвычайно трудно реализуемо для форумов, у которых в настройках можно указать по сколько сообщений на страницу выводить.
|
|
|
|
С нами с 13.09.06
Сообщения: 434
Рейтинг: 173
|
Добавлено: 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.= между точкой и именем переменой нельзя ставить.
|
|
Мы есть то, к чему стремимся!
|
0
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 07/07/07 в 23:33 |
ШЕФФ писал: | да и пробел $lin.= между точкой и именем переменой нельзя ставить. |
серьезно? а у меня работает так
$lin .=
|
|
|
|