Home  >  Article  >  Backend Development  >  Explanation of related content of php CSS Update Class

Explanation of related content of php CSS Update Class

jacklove
jackloveOriginal
2018-06-11 13:36:592170browse

CSSUpdate.class.php

<?php
/** css 更新类,更新css文件内图片的版本
*	Date: 	2013-02-05
*	Author: fdipzone
*	Ver:	1.1
*
*	Func:
*	update();
*
*   Ver:    1.1 增加search_child参数,可遍历子文件夹
*/
class CSSUpdate{
    private $csstmpl_path = null;
    private $css_path = null;
    private $replacetags = array();
    private $search_child = false;
    private $convert_num = 0;
    private $is_ready = 0;
    /** 初始化
    * @param String  $csstmpl_path css模版路径
    * @param String  $css_path     css目标路径
    * @param Array   $replacetags  需要替换的图片类型
    * @param boolean $search_child 是否遍历子文件夹,默认false
    */
    public function __construct($csstmpl_path, $css_path, $replacetags=array(), $search_child=false){
        if(!is_dir($csstmpl_path) || !is_dir($css_path) || !$replacetags){
            $this->is_ready = 0;
        }else{
            $this->csstmpl_path = $csstmpl_path;
            $this->css_path = $css_path;
            $this->replacetags = $replacetags;
            $this->search_child = $search_child;
            $this->is_ready = 1;
        }
    }
    /** 更新css文件 */
    public function update(){
        if($this->is_ready==0){
            $this->response(&#39;csstmpl or csspath or replacetags error&#39;);
            return &#39;&#39;;
        }
        $this->traversing($this->csstmpl_path);
        $this->response(&#39;covert num:&#39;.$this->convert_num);
    }
    /** 遍历文件夹
    * @param String $path 文件路径
    */
    private function traversing($path){
        $handle = opendir($path);
        while(($file=readdir($handle))!==false){
            if($file!=&#39;..&#39; && $file!=&#39;.&#39;){
                $curfile = $path.&#39;/&#39;.$file;
                
                if(is_dir($curfile)){   // folder
                    if($this->search_child){    // 需要遍历子文件夹
                        $this->traversing($curfile);
                    }
                }elseif($this->checkExt($curfile)){ // css file
                    $dfile = str_replace($this->csstmpl_path, $this->css_path, $curfile);
                    $this->create($curfile, $dfile);
                    $this->response($curfile.&#39; convert to &#39;.$dfile.&#39; success&#39;);
                    $this->convert_num ++;
                }
            }
        }
        closedir($handle);
    }
    /** 检查文件后缀 */
    private function checkExt($file){
        $name = basename($file);
        $namefrag = explode(&#39;.&#39;, $name);
        if(count($namefrag)>=2){
            if(strtolower($namefrag[count($namefrag)-1])==&#39;css&#39;){ // css文件
                return true;
            }
        }
        return false;
    }
    /** 替换模版内容,写入csspath
    * @param String $tmplfile 模版文件
    * @param String $dfile    目标文件
    */
    private function create($tmplfile, $dfile){
        $css_content = file_get_contents($tmplfile);
        
        foreach($this->replacetags as $tag){
            $css_content = str_replace($tag, $tag."?".date(&#39;YmdHis&#39;), $css_content);
        }
        
        if(!is_dir(dirname($dfile))){   // 生成目标路径
            mkdir(dirname($dfile), 0755, true);
        }
        
        file_put_contents($dfile, $css_content, true);
    }
    /** 输出 */
    private function response($content){
        echo $content."<br>";
    }
}
?>

demo:

<?php
require_once "CSSUpdate.class.php";
define(&#39;ROOT_PATH&#39;, dirname(__FILE__));
$css_path = ROOT_PATH.&#39;/css&#39;;
$csstmpl_path = ROOT_PATH.&#39;/csstmpl&#39;;
$replacetags = array(&#39;.png&#39;, &#39;.jpg&#39;, &#39;.gif&#39;);
$cssobj = new CSSUpdate($csstmpl_path, $css_path, $replacetags);
$cssobj->update();
?>

This article explains Learn about the related content of php CSS Update Class. For more related content, please pay attention to the php Chinese website.

Related recommendations:

About php __call and __callStatic content explanation

About memcached common commands and usage instructions

Related explanations about PHPMailer - PHP email transport class

The above is the detailed content of Explanation of related content of php CSS Update Class. For more information, please follow other related articles on the PHP Chinese website!

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