Heim  >  Artikel  >  Backend-Entwicklung  >  一个简单的模板类--编译型的(simplet类增强后)_PHP教程

一个简单的模板类--编译型的(simplet类增强后)_PHP教程

WBOY
WBOYOriginal
2016-07-13 17:35:34934Durchsuche

在上次发布的simplet类之后(http://bbs.phpchina.com/thread-85257-1-1.html),发现有很多缺陷,例如不支持多维数组,注释和没有缓存功能,这次我把这些功能都加进去了!!!
大家有兴趣的话,我下次出个教程,来谈谈我写这个类的一些思想和方法!!!支持的话可以跟贴支持我!
PHP代码:
simplet.class.php
class SimpleT {
    private $t_vars;
    private $templates_dir;
    private $templates_c_dir;
    private $cache;
    private $cache_dir;
   
    public function __construct() {
        $this->templates_dir = ./templates/;
        $this->templates_c_dir = ./templates_c/;
        $this->cache = 0;
        $this->cache_dir = ./cache/;
    }
    public function setDir($dir, $type = template) {
        if(is_dir($dir)) {
            if($type == template)
                $this->templates_dir = rtrim($dir, /)./;
            elseif($type == template_c)
                $this->templates_c_dir = rtrim($dir, /)./;
            elseif($type == cache)
                $this->cache_dir = rtrim($dir, /)./;
            else
                return false;
            return true;
        } else {
            return false;
        }
    }
   
    public function cache($time) {
        if(is_numeric($time)) {
            $this->cache = $time;
            return true;
        } else {
            return false;
        }
    }
   
    public function assign($var, $value = NULL) {
        if (is_array($var)) {
            foreach ($var as $key => $val) {
                $this->t_vars[$key] = $val;
            }
        } else {
            $this->t_vars[$var] = $value;
        }
    }
    private function comp($filename) {
        try {
            if(!$fp = fopen($filename, r)) {
                throw new Exception(Can not open . $filename);
            }
            $filesize = filesize($filename);
            if($filesize                 throw new Exception(The file size must > 0 );
            }
            $content = fread($fp, $filesize);
            fclose($fp);
            unset($fp);
           
            $content = preg_replace("//","", $content);
            $content = preg_replace("//", " \$$1_val) { ?>",$content);
            $content = preg_replace("//", "", $content);
            $content = preg_replace("//", " \$$3) { ?>", $content);
            $content = preg_replace("//", "", $content);
            $content = preg_replace("//", "", $content);
            $content = preg_replace("//", "", $content);
            $content = preg_replace("//","", $content);
            $content = preg_replace("/([^]{0,})/", "", $content);
            if (preg_match_all("/)]{1,})}%>/", $content, $files)) {
                $this->comp($this->templates_dir . $files[1][0]);
            }
            $content = preg_replace("/)]{1,})}%>/", "templates_c_dir}simplet_comp_$1.php; ?>", $content);
            echo $content;
            $fp = fopen($this->templates_c_dir . simplet_comp_ . basename($filename) . .php, w);
            if(!fwrite($fp, $content)) {
                throw new Exception(Can not write content in the . $filename);
       &

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/508319.htmlTechArticle在上次发布的simplet类之后(http://bbs.phpchina.com/thread-85257-1-1.html),发现有很多缺陷,例如不支持多维数组,注释和没有缓存功能,这次我把...

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn