Home  >  Article  >  Backend Development  >  A simple template class - compiled (after the simplet class is enhanced)_PHP tutorial

A simple template class - compiled (after the simplet class is enhanced)_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 17:35:34933browse

After the simplet class released last time (http://bbs.phpchina.com/thread-85257-1-1.html), it was found that there are many defects, such as not supporting multi-dimensional arrays, comments and no Caching function, this time I added all these functions! ! !
If you are interested, I will make a tutorial next time to talk about some of my ideas and methods of writing this class! ! ! If you support, you can follow me and support me!
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 <= 0) {
                throw new Exception(The file size must > 0 );
            }
            $content = fread($fp, $filesize);
            fclose($fp);
            unset($fp);
           
            $content = preg_replace("/<%=([$a-zA-Z0-9_]{1,})%>/","", $content);
            $content = preg_replace("/<%([$a-zA-Z0-9_]{1,}).loop%>/", " $$1_val) { ?>",$content);
            $content = preg_replace("/<%([$a-zA-Z0-9_]{1,}).loop(([$a-zA-Z0-9_]{1,}))%>/", "", $content);
            $content = preg_replace("/<%([$a-zA-Z0-9_]{1,}).loop(([$a-zA-Z0-9_]{1,}),([$a-zA-Z0-9_]{1,}))%>/", " $$3) { ?>", $content);
            $content = preg_replace("/<%([$a-zA-Z0-9_]{1,}).key%>/", "", $content);
            $content = preg_replace("/<%([$a-zA-Z0-9_]{1,}).value%>/", "", $content);
            $content = preg_replace("/<%([$a-zA-Z0-9_]{1,})?%>/", "", $content);
            $content = preg_replace("/<%end%>/","", $content);
            $content = preg_replace("/<%##common##%>([^<%##end##%>]{0,})<%##end##%>/", "", $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),发现有很多缺陷,例如不支持多维数组,注释和没有缓存功能,这次我把...

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn