Форум → Программирование → PHP для идиотов → Снова парсер шаблонов
Снова парсер шаблонов
-
23 февраля 2009 г. 18:10, спустя 27 минут 25 секунд
слушай, почему бы тебе не вынести его в класс и не сделать обработку вот таким образом?
$text = preg_replace_callback("#{\s*(.*?)\s*}#ismu",array($this,"_process"),$text);Сапожник без сапог -
23 февраля 2009 г. 18:20, спустя 9 минут 25 секунд
ну да, callback — это вариант. надо будет поиграть с этим.
спасибо!ιιlllιlllι унц-унц -
23 февраля 2009 г. 18:25, спустя 5 минут 27 секунд
жжешь))
ну да, callback — это вариант. надо будет поиграть с этим.
спасибо!
я просто сразу спалил что preg_split это кастыль какой то.
давай я угадаю твою задачу/проблему
тебе надо было вычленить все <!– –>, зная где они, иметь возможность заменить их на чтото. ты решил разбить весь шаблон в массив - куски кода разделенные этими элементами, заменить эти элементы, а потом слить вместе? зы: код не смотрел, могу в корне ошибаться :)Сапожник без сапог -
23 февраля 2009 г. 18:29, спустя 4 минуты 23 секунды
phpdude, я от этой мысли проблевался…
ЗЫ PHP не «объектно ориентированный», он «объектно способный». -
23 февраля 2009 г. 18:31, спустя 1 минуту 43 секунды
CTAPbIu_MABP, предложи свой вариант, ты от обоих мыслей жуе проблевался :)Сапожник без сапог -
23 февраля 2009 г. 18:47, спустя 16 минут 10 секунд
ты верно ухватил суть. остальное - детали.
вместо split можно сделать с preg callback. побочный эффект — еще одна функция — логично объединить их в одном классе.
по мне так если можно обойтись без класса, обойдись :) это в PHP. в "десктопных" языках я не парюсь.
пожалуй сделаю два варианта: в одной функции со split и в классе с preg callbackιιlllιlllι унц-унц -
-
23 февраля 2009 г. 18:56, спустя 46 секунд
и все гавно?
я уже этих шаблонизаторов наштамповал штук 5…
дуд жжетСапожник без сапог -
23 февраля 2009 г. 18:56, спустя 13 секунд
и все гавно?
я уже этих шаблонизаторов наштамповал штук 5…
дуд жжет
ты угадал
ща юзаю шаблонизатор сапа .. ыыы мне пох -
23 февраля 2009 г. 19:04, спустя 7 минут 55 секунд
как дурно кончил …
и все гавно?
я уже этих шаблонизаторов наштамповал штук 5…
дуд жжет
ты угадал
ща юзаю шаблонизатор сапа .. ыыы мне похСапожник без сапог -
-
23 февраля 2009 г. 19:39, спустя 29 минут 22 секунды
aivee, а ты мой поюзай :) потом скажешь что понравилось, а что нет.ιιlllιlllι унц-унц -
23 февраля 2009 г. 19:42, спустя 3 минуты 32 секунды
мне влом писать <!– –>. супершаблонизаторclass Template
{
protected $tpl = '';
protected $vars = array();
public function __construct($tpl)
{
$dir = Core::instance()->registry('configs/template/dir');
if (is_readable($dir . $tpl . '.php'))
{
$this->tpl = $dir . $tpl . '.php';
}
else
{
return false;
}
}
public function assign($arr)
{
if (is_array($arr))
{
$this->vars = $arr;
return true;
}
return false;
}
public function __set($var, $val)
{
$this->vars[$var] = $val;
}
public function __get($var)
{
if (isset($this->vars[$var]))
{
return $this->vars[$var];
}
return false;
}
public function get()
{
ob_start();
include_once $this->tpl;
$content = ob_get_contents();
ob_end_clean();
return $content;
}
public function display($exit = false)
{
echo $this->get();
if ($exit)
{
exit();
}
return true;
}
} -
23 февраля 2009 г. 19:45, спустя 3 минуты 7 секунд
[font size=100500]achtung!!!! баг на пыхе!!! внизу маего камента ip пыхи[/font]
а жжаль -
23 февраля 2009 г. 19:52, спустя 6 минут 9 секунд
вот чиста для тебя переделал на {var}
даже компактнее чем нативный код
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{title}</title>
<style>
TD {border: 1px solid red; padding: 1em;}
</style>
</head>
<body>
{include header}
<p>Message: {message}</p>
<p>Code: {code}</p>
<p>Escaped code: {@code}</p>
Array access:
<ul>
<li>xarr['a']: "{xarr:a}" - element</li>
<li>esc(xarr['a']): "{@xarr:a}" - escaped element</li>
<li>xarr['b']['r']: "{xarrr}" - multidimentional</li>
<li>xarr['b'][12]: "{xarr12}" - multidimentional, int key</li>
<li>xarr['c'][8]: "{xarr:c:x}" - (wrong index)</li>
<li>xarr['d'][1]: "{xarr:d:1}" - array d is reference</li>
</ul>
</body>
</html>
{xarr:d:1} в php-эквиваленте будет <?= $data['xarr']['d'][1] ?>
{@xarr:a} в php-эквиваленте будет <?= htmlescape($data['xarr']['a']) ?>
выбирай :)))ιιlllιlllι унц-унц
Пожалуйста, авторизуйтесь, чтобы написать комментарий!