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 :: нашёл новый способ шаблонизации

 PHP.SU

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


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

> Описание: хатя он уже с большой бородой
scuter
Отправлено: 12 Июля, 2008 - 07:07:27
Post Id



Посетитель


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


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




вот простая функция
PHP:
скопировать код в буфер обмена
  1. function exp($tpl, $arg)
  2. {
  3.         if(is_array($arg)){foreach($arg as $key => $val){$$key = $val;}}
  4.         eval("\$p = <<<ENV\r\n".$tpl."\r\nENV;\n");
  5.         return $p;
  6. }

вот простой шаблон
CODE (text):
скопировать код в буфер обмена
  1. <html>
  2.         <head>
  3.         </head>
  4.         <body>
  5.                 <h1>fsldkfjghsldfkgh</h1>
  6.                 <h2>{$key}</h2>
  7.                 <h2>{$val}</h2>
  8.                 <h2>{$test}</h2>
  9.                 <h2>{$text}</h2>
  10.         </body>
  11. </html>

а вот так юзаем это дело
PHP:
скопировать код в буфер обмена
  1. print exp(file_get_contents('./test.html'), array('text'=>'sfgsdfgsdfgsdfgs','test'=>'sfkldjghlsdk'));
 
 Top
Джур
Отправлено: 12 Июля, 2008 - 11:03:53
Post Id



Посетитель


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


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




хм... при тестировани показывает что памяти и рессурсов данный метод жрет больше чем простая замена... даже по регуляру.
CODE (text):
скопировать код в буфер обмена
  1. Если нет разници, зачем платить больше?


-----
Тамбовский каджит тебе товарищ
 
 Top
scuter
Отправлено: 12 Июля, 2008 - 15:42:15
Post Id



Посетитель


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


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




интересно а почему же он так много ресурсов жрёт?
неужели eval така тормозая штука.
 
 Top
EuGen Администратор
Отправлено: 13 Июля, 2008 - 15:37:06
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Интерпретируемый интерпретатор? .. да, и почему бы оно так тормозило, даже странно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
scuter
Отправлено: 14 Июля, 2008 - 01:04:48
Post Id



Посетитель


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


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




в принципе это в полне возможно,
просто каждый раз когда скрипт запускается он сназало компилируется,
а потом выполняется, но когда используеся eval компилировать приходится несколько раз,
от этого может быть тормоз но это врятли, т.к. это происходить очень бысто,
скорость примерно такая же как в include,
но разница между include и eval только в том что include можно закешировать,
а eval ни как не закешируешь.
(Добавление)
я решил собрать все способы шаблонизаци и хотелось бы услышать ваше мнение об этом
PHP:
скопировать код в буфер обмена
  1. class tpl
  2. {
  3.         var $tage=array('<!--<>','<>-->');
  4.         function replace($replace, $subject)
  5.         {
  6.                 $tag_on = $this->tage[0];
  7.                 $tag_off = $this->tage[1];
  8.                 if(is_array($replace))
  9.                 {
  10.                         foreach ($replace as $key => $val)
  11.                         {
  12.                                 $subject = str_replace($tag_on.$key.$tag_off, $val, $subject);
  13.                         }
  14.                         return $subject;
  15.                 }
  16.                 else
  17.                 {
  18.                         return '';
  19.                 }
  20.         }
  21.         function heredoc($tpl, $arg)
  22.         {
  23.                 if(is_array($arg)){foreach($arg as $key => $val){$$key = $val;}}
  24.                 eval("\$p = <<<ENV\r\n".$tpl."\r\nENV;\r\n");
  25.                 return $p;
  26.         }
  27.         function php_cod($tpl, $arg)
  28.         {
  29.                 ob_start();
  30.                 if(is_array($arg)){foreach($arg as $key => $val){$$key = $val;}}
  31.                 include($tpl);
  32.                 $r = ob_get_contents();
  33.                 ob_end_clean();
  34.                 return $r;
  35.         }
  36. }

(Отредактировано автором: 14 Июля, 2008 - 01:05:12)

 
 Top
Stierus Супермодератор
Отправлено: 29 Декабря, 2008 - 11:58:21
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




Чем шаблон
CODE (text):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <h1>fsldkfjghsldfkgh</h1>
  6. <h2>{$key}</h2>
  7. <h2>{$val}</h2>
  8. <h2>{$test}</h2>
  9. <h2>{$text}</h2>
  10. </body>
  11. </html>

Лучше, чем
CODE (text):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <h1>fsldkfjghsldfkgh</h1>
  6. <h2><?=$key?></h2>
  7. <h2><?=$val?></h2>
  8. <h2><?=$test?></h2>
  9. <h2><?=$text?></h2>
  10. </body>
  11. </html>
, а
CODE (text):
скопировать код в буфер обмена
  1. print exp(file_get_contents('./test.html'), array('text'=>'sfgsdfgsdfgsdfgs','test'=>'sfkldjghlsdk'));
чем
Изобретатели, блин Улыбка

ps
Заранее предвидя вопросы типа:"А как в переменную загнать?" - кину подсказку: ob_get_contents();

Какие можественные евалы, классы и тд ?Улыбка Понимаю, Smarty можно использовать - там кэширование нормально отлажено, лишние телодвижения что бы не делать, но смысл использовать вашу городьбу для меня совершенно непонятен

(Отредактировано автором: 29 Декабря, 2008 - 12:03:58)

 
My status
 Top
Singularis
Отправлено: 29 Декабря, 2008 - 15:09:54
Post Id


Новичок


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


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




Тем, что в первом случае шаблон может быть .html, а во втором должен быть .php…
 
 Top
Champion Супермодератор
Отправлено: 29 Декабря, 2008 - 15:32:34
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




В .html да и в чем угодно может интерпретироваться php-код
В .htaccess
AddType application/x-httpd-php .html ....(все остальное)

(Отредактировано автором: 29 Декабря, 2008 - 15:35:52)

 
 Top
Stierus Супермодератор
Отправлено: 29 Декабря, 2008 - 16:43:47
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




Цитата:
Тем, что в первом случае шаблон может быть .html, а во втором должен быть .php…

Хоть .inc обзовите, какая разница ?Улыбка
 
My status
 Top
Ch_chov
Отправлено: 19 Января, 2009 - 19:34:17
Post Id



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


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




Цитата:
хм... при тестировани показывает что памяти и рессурсов данный метод жрет больше чем простая замена... даже по регуляру.


А каким образом вы определяете количество памяти и ресурсов, которые "жрет" скрипт?
 
 Top
Джур
Отправлено: 24 Января, 2009 - 21:44:38
Post Id



Посетитель


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


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




Ну вы некроманты, подняли тему полугодовой давности Улыбка

Ch_chov пишет:
А каким образом вы определяете количество памяти и ресурсов, которые "жрет" скрипт?

разного рода top и xtop никто не отменял. Улыбка да и в РНР есть чем скорость/рессурсы замерить.


-----
Тамбовский каджит тебе товарищ
 
 Top
chaynyk
Отправлено: 06 Апреля, 2009 - 22:51:35
Post Id



Гость


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


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




Champion пишет:
В .html да и в чем угодно может интерпретироваться php-код
В .htaccess
AddType application/x-httpd-php .html ....(все остальное)

Да уж точно, одно дело переменные воткнуть, а вот цикл какой нибудь? а поиск по сайту?
и получиться, что проще и быстрей в *.php или *.inc


-----
Чайник в PHP и SEO,http://fleshky[dot]ru
 
 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