Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   простейший класс для разделения кода и дизайна (http://www.flasher.ru/forum/showthread.php?t=68417)

Gaen 27.08.2005 02:59

простейший класс для разделения кода и дизайна
 
Для тех, кого задолбало каждый раз перерывать код чтобы поменять какой-нить элемент оформления :)

Переменные шаблона выделяются знаками процента, например, вот так: %SOMEVAR% . Так же название переменных чувствительно к регистру

Создание:
$tpl=new tpl("path/to/template");
ИЛИ
$tpl=new tpl("строка содержащая переменную %VAR%",1);
если задан второй аргумент и он не равен 0 то первый параметр интерпретируется не как путь к файлу шаблона, а как текст шаблона

при ошибке в любой функции её причина записывается в свойство объекта error (можно проверять по isset())

Присвоение:

$tpl->a("VAR", $value); //заменяет в шаблоне строку %VAR% на значение $value

Парсинг:
$out=$tpl->parse(); //возвращает обработанный шаблон, НЕ ВЫВОДИТ В ДОКУМЕНТ

Вывод:
$tpl->p(); //выводит обработанный шаблон. эта функция НЕ ТРЕБУЕТ предварительного парсинга

ЗЫ: звыняйте, не умею я мануалы писать :)



Код:

<?
class tpl{
        //Конструктор класса
        function tpl($path, $from_str=0){
                $this->error="";
                if(!$from_str){
                        if(!file_exists($path)){
                                $this->error="Файл \"$path\" не найден.";
                                $this->str=$this->error;
                                return 0;
                        }//end if
                        $str=join("", file($path));
                }else{//if(!$from_str)
                        $str=$path;
                }//end if
                $this->str=$str;
                return 1;
        }//конец конструктора

        //assign - присвоение
        function a($var, $value){
                $this->vars[$var]=$value;
        }//end of assign function

        //Парсинг
        function parse(){
                $this->parsed_str=$this->str;
                if(isset($this->vars))
                foreach($this->vars as $k=>$v){
                        $this->parsed_str=str_replace('%'.$k.'%', $v, $this->parsed_str);
                }
                return $this->parsed_str;
        }//end of parse function

        //print - вывод
        function p(){
                echo $this->parse();
        }
}//end of class description
?>



Часовой пояс GMT +4, время: 14:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.