Xwab
Форумыnavigate_nextПрограммирование на PHP

Нужно в шаблонизатор добавить функцию. Помогите пожалуйста
Сообщения
Morty

Имеется такая штука

<?php
class content
{
    var $vars = array();
    var $content = '';

    function set($name, $val) {
        $this->vars[$name] = $val;
    }

    function out_content($tpl) {
        $this->content = file_get_contents($tpl);
        foreach($this->vars as $key => $val) {
            $this->content = str_replace($key, $val, $this->content);
        }
        echo $this->content;
    }
}
$content = new content();
?>

Нужно сюда добавить функцию include.
То есть в шаблоне пишешь что-то типа
{inc_file="ololo.php"}
И происходит включение файла, как это происходит с include 'some_file.php';
в php файлах.

18 Янв 2012, 3:38
JoiNeD

Посоветовал бы вообще выкинуть этот "шаблонизатор"

18 Янв 2012, 8:05
Istsam

JoiNeD, для того чтобы развивать мозг - можно добавить функций и использовать.
добавлено спустя 1 минуту:
алгоритм таков,
Ты ищешь определенный текст заключенный в кавычки, потом его вырезаешь, через ехплоде делишь, и выбираешь нужное.
добавлено спустя 1 минуту:

18 Янв 2012, 8:46
Morty

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

А можно непосредственно кусок кода и куда его вставлять?
Если не затруднит, конечно...

18 Янв 2012, 9:20
JoiNeD

Istsam, навыки программирования может, а не мозг? В случае автора, чтобы развиваться нужно знать немного больше, т.к в первом посте не код, а хрень. Лучше уж сначало взять уже сделанное и разбираться в нем, а уж потом писать свое.
З.Ы в нэте полно шаблонизаторов, автор, возьми все же за основу уже готовый, "легкий" шаблонизатор и поправляй его под себя

18 Янв 2012, 9:44
Morty

JoiNeD, Так я это как раз в нете и нашёл =)
Я нашёл один "лёгкий", начал внедрять. А потом пошло, то то не так то это...
А этой вот фигни мне с головой хватает.
Чем оно тебе не нравится?

18 Янв 2012, 10:37
GraftM

Обычно загрузка шаблона происходит в конструкции, т.е.
$tpl = new tpl(шаблон);

А инклудить другой шаблон через file_get_contents и обрабатывать через eval.
Но я не советую так делать.

18 Янв 2012, 11:28
JoiNeD

Morty, древний он видимо, раз var используется, и смысла "var content" не догнал, это свойство вообще не должно сохраняться в классе.
Как вариант, если уж двух функции тебе хватает
Класс: (content.class.php)
class content {

private $vars=array();

public function set($name, $value) {
$this->vars[$name]=$value;
}

public function display($tpl) {
extract($this->vars);
include($tpl);
}

}
Сам скрипт:
<?php
include('content.class.php');
$content=new Content;
$content->set('login', 'JoiNeD');
$content->set('today', date('d.m.Y'));
$content->display('hello.tpl');
?>
Шаблон: (hello.tpl)
<? include('ololo.php') ?>
Привет, <? echo $login ?><br />
Сегодня: <? echo $today ?>
<? include('foot.php') ?>

добавлено спустя 4 минуты:
Хотя это конечно никуда не годиться, но уж лучше так, чем код с первого поста.

18 Янв 2012, 12:34
Morty

JoiNeD, Спасибо.
Вот только было бы вообще замечательно еслиб теги в шаблон вствалялись как в коде с первого поста. То есть:
Привет {login}<br>
Сегодня {date}<br>
...
Можешь так сделать?

18 Янв 2012, 14:07
JoiNeD

Morty, тогда file_get_contents + str_replace + eval . Надеюсь разберешься

18 Янв 2012, 15:15
Ответить на тему