dimagolov
Новичок
тебя по идее спасут магические методы
Помогать в том направлении, что ты идёшь, не хочется. Давай проще: у тебя есть список разрешённых функций (а не методов класса обработки шаблона!) для вызова из шаблона —Автор оригинала: Inferno
в общем берется шаблон страница и
гдеPHP:foreach($this->func as $match) $ss = preg_replace($match['name'], $match['fun'], $ss);это нашPHP:$this->funcPHP:$this->func[] = array('name' => '/#LESSONS#/', 'fun' => $this->lessons());
private $_allowed_functions = array('f1', 'f2', 'f3');
$replacement = 'in_array("\\1", $this->_allowed_functions) ? call_user_func("\\1") : ""';
$s = preg_replace('/#([a-z_][a-z0-9_]*)#/ie', $replacement, $s);
вот это бля самый плохой совет, особенно для новичкаInferno, а рекомендую вам взять готовый фреймвок и не тратить время на решение тривиальных задач. Будет во много раз продуктивнее если вы сместите акцент разработки в сторону бизнес логики и интерфейса пользователя.
<?
function Template($vars,$__tplname,$extract=true){
if(is_array($vars) && !empty($vars) && $extract) extract($vars,EXTR_SKIP);
ob_start();
include $__tplname;
$res=ob_get_contents();
ob_end_clean();
return $res;
}
?>
— это вопрос явно не ко мне, ты что-то перепутал.Автор оригинала: Inferno
Вурдалак почему предложенный метод нельзя перенсти в классы?
<?php
// конечно не ручками, а получаем из моделей итд - это пример просто
$tpl_vars = array(
'username' => 'vasya',
'items' => array(
array('name' => 'fignya1', 'price' => 100),
array('name' => 'fignya2', 'price' => 200),
)
);
parse_template('template.php', $tpl_vars);
function parse_template($tpl_file, array $tpl_vars) {
extract($tpl_vars);
include $tpl_file;
}
function e($s) {
return htmlspecialchars($s, ENT_QUOTES);
}
<? include 'header.php'; ?>
<h1>Hello <?=e($username)?>!</h1>
<table>
<? foreach ($items as $item): ?>
<tr><td><?=e($item['name'])?></td><td><?=e($item['price'])?></td></tr>
<? endforeach; ?>
</table>
<? include 'footer.php'; ?>
у меня на этот случай есть самописный класс Cover_Var, который представляет собой объектный массив с кучей полезных (для меня) методов. Поэтому у меня никогда не бывает нотисов, если в шаблоне идет попытка вывести неизвестную переменную:например, без проверок isset будут валиться нотисы
<tr>
<th colspan="3"><h4><?=$this->lang->search_users?></h4></th>
</tr>
а подобного рода функции мы оформляем в класс для форматирования html кода в шаблонах!function e($s) {
return htmlspecialchars($s, ENT_QUOTES);
}

это проблема, высосанная из пальца. просто надо адекватных программистов брать на работу и самому быть адекватным. вот и все.недопущения написания в шаблоне того, чего там не должно быть - типа mysql_query
отучаемся говорить за всехАвтор оригинала: C_TIGER
весь hight load пишется на native шаблонах
оба метода имеют право на жизнь и свои преимущества и недостатки. я юзаю оба в зависимости от ситуации.