Реклама на сайте Advertise with us

Шаблонность в php

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

php

С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410


Передовик Master-X (16.01.2010)
Ссылка на сообщениеДобавлено: 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");


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

Последний раз редактировалось: _s_[sov] (08/07/07 в 07:56), всего редактировалось 3 раз(а)

IPhosters.com - любые решения для Вас (виртуалы от $4.99, vps от $11.99, дедики от $95)

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 05/07/07 в 00:00       Ответить с цитатойцитата 

а насчет чего ты хочешь услышать? icon_smile.gif

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 05/07/07 в 00:00       Ответить с цитатойцитата 

Не мучайся... http://smarty.php.net

0
 

php

С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410


Передовик Master-X (16.01.2010)
Ссылка на сообщениеДобавлено: 05/07/07 в 00:02       Ответить с цитатойцитата 

Не, про смарти я знаю. Мне бы хотелось самому написать класс. Дак услышать о том в верном ли я направлении о представлении шабонности?

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 05/07/07 в 00:11       Ответить с цитатойцитата 

Если смарти знаешь, следовательно ты должен иметь представление о шаблонности

Если так уж очень охота секса, поебись с XML-XSLT трансформациями

0
 

php

С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410


Передовик Master-X (16.01.2010)
Ссылка на сообщениеДобавлено: 05/07/07 в 00:14       Ответить с цитатойцитата 

Смарти в процессе изучения. Вот вчера заинсталил, чуток поразбирался, нада бы исчо поковыряться с ним. А так на первый взгляд штука довольно неплохая.
Ну с xml+xslt я уже тоже попробовал поковыряться, могу сорцы выложить icon_smile.gif

0
 



С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987

Ссылка на сообщениеДобавлено: 05/07/07 в 01:33       Ответить с цитатойцитата 

Не помню кто сказал: Наш человек так устроен, что ему проще чем потратить 3 дня на изучение чужого - за месяц написать свое.

0
 



С нами с 26.02.06
Сообщения: 55
Рейтинг: 37

Ссылка на сообщениеДобавлено: 05/07/07 в 10:06       Ответить с цитатойцитата 

Смарти помоему выходит под лицензией gpl, а значит все продукты которые его используют должны быть тоже gpl? а значит коммерческий продукт на основе его не сделаешь?

PHP программер.

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 05/07/07 в 10:12       Ответить с цитатойцитата 

kot_murkin писал:
Смарти помоему выходит под лицензией gpl, а значит все продукты которые его используют должны быть тоже gpl? а значит коммерческий продукт на основе его не сделаешь?


так ведь делают же
в шаблонности под себя надо копать в направлении быстродействия кода

0
 



С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970

Ссылка на сообщениеДобавлено: 05/07/07 в 10:19       Ответить с цитатойцитата 

на базе gpl-скриптов полно коммерческих решений.
да и вообще, есть linux gpl и есть redhat

0
 



С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970

Ссылка на сообщениеДобавлено: 05/07/07 в 10:20       Ответить с цитатойцитата 

_s_[sov] писал:

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

рекомендую поковырять http://www.phpxtemplate.org/WhoUsesXTemplate

0
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 05/07/07 в 10:53       Ответить с цитатойцитата 

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

0
 



С нами с 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. если файла не было - убиться об стену

ВОСТОРГ ЗНАЧИТ BMW

0
 

php

С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410


Передовик Master-X (16.01.2010)
Ссылка на сообщениеДобавлено: 05/07/07 в 12:37       Ответить с цитатойцитата 

samedi писал:


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


Чет действительно я тут логику нарушил icon_smile.gif

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 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%.

Блог на миллион

0
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 05/07/07 в 13:36       Ответить с цитатойцитата 

kot_murkin писал:
Смарти помоему выходит под лицензией gpl, а значит все продукты которые его используют должны быть тоже gpl? а значит коммерческий продукт на основе его не сделаешь?


прочитай лицензию и не пиши бред...

0
 



С нами с 12.12.06
Сообщения: 871
Рейтинг: 381

Ссылка на сообщениеДобавлено: 06/07/07 в 21:12       Ответить с цитатойцитата 

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

и потом уже в зависимости от того что надо выдать кручу верчу,
если что то посерьёзнее, на много пользователей рассчитано, то юзаю Смарти. Может и есть чего получше но смарти пока не подводил, просто его тоже надо правильно настраевать.

0
 

php

С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410


Передовик Master-X (16.01.2010)
Ссылка на сообщениеДобавлено: 06/07/07 в 22:12       Ответить с цитатойцитата 

Да это я просто для себя пишу. на инклудах я уже написал, хочется чего то более реального. А смарти да, штука хорошая. Поэтому разбираюсь с ней тоже.

IPhosters.com - любые решения для Вас (виртуалы от $4.99, vps от $11.99, дедики от $95)

0
 



С нами с 27.06.07
Сообщения: 289
Рейтинг: 247

Ссылка на сообщениеДобавлено: 07/07/07 в 03:04       Ответить с цитатойцитата 

Смарти хорош со всех сторон, и аццки быстр и дьявольски умен icon_smile.gif
Да я и сам когда-то писал шаблонизатор (это вообще всенародный фетиш, шаблонизаторы писать, каждый новичок считает своим долгом изобрести очередной велик), так же как у всех он работает быстрее смарти, и я его даже юзаю временами. Но такого симбиоза возможностей и скоростей как у смарти, нет ни у одного другого шаблонизатора.
Совет топикстартеру: определись четко с необходимым функционалом, но при этом постарайся удержать амбиции и не задирай уровень абстракции на недостижимые высоты, иначе толку не будет. Ещё важный момент в шаблонизаторостроительстве - не использовать регулярки, это - зло.

0
 



С нами с 16.09.05
Сообщения: 38
Рейтинг: 54

Ссылка на сообщениеДобавлено: 07/07/07 в 12:00       Ответить с цитатойцитата 

Цитата:
Ещё важный момент в шаблонизаторостроительстве - не использовать регулярки, это - зло.

Это почему это? icon_smile.gif
Разбирать шаблон можно чем угодно. Если синтаксис не сложный, то регулярки - самое удобное. Если сложный - то конечные автоматы и т.п.
Естественно, если процесс обработки шаблона разделен на два этапа.
Один раз шаблон компилируется в некое внутреннее представления и потом всегда используется оно.

Блог на миллион

0
 

php

С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410


Передовик Master-X (16.01.2010)
Ссылка на сообщениеДобавлено: 07/07/07 в 14:50       Ответить с цитатойцитата 

Я в регулярках не сильно пока ориентируюсь, поэтому начинаю писать с самого простого!

IPhosters.com - любые решения для Вас (виртуалы от $4.99, vps от $11.99, дедики от $95)

0
 



С нами с 27.06.07
Сообщения: 289
Рейтинг: 247

Ссылка на сообщениеДобавлено: 07/07/07 в 16:21       Ответить с цитатойцитата 

janso писал:
Это почему это? icon_smile.gif
Разбирать шаблон можно чем угодно. Если синтаксис не сложный, то регулярки - самое удобное. Если сложный - то конечные автоматы и т.п.
Естественно, если процесс обработки шаблона разделен на два этапа.
Один раз шаблон компилируется в некое внутреннее представления и потом всегда используется оно.


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

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

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

0
 



С нами с 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 .=

крипта на ByBit

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »