| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 | <?php// +----------------------------------------------------------------------// | TOPThink [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2013 http://topthink.com All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@gmail.com>// +----------------------------------------------------------------------namespace Think\Storage\Driver;use Think\Storage;// 本地文件写入存储类class File extends Storage{    private $contents=array();    /**     * 架构函数     * @access public     */    public function __construct() {    }    /**     * 文件内容读取     * @access public     * @param string $filename  文件名     * @return string          */    public function read($filename,$type=''){        return $this->get($filename,'content',$type);    }    /**     * 文件写入     * @access public     * @param string $filename  文件名     * @param string $content  文件内容     * @return boolean              */    public function put($filename,$content,$type=''){        $dir         =  dirname($filename);        if(!is_dir($dir)){            mkdir($dir,0777,true);        }        if(false === file_put_contents($filename,$content)){            E(L('_STORAGE_WRITE_ERROR_').':'.$filename);        }else{            $this->contents[$filename]=$content;            return true;        }    }    /**     * 文件追加写入     * @access public     * @param string $filename  文件名     * @param string $content  追加的文件内容     * @return boolean             */    public function append($filename,$content,$type=''){        if(is_file($filename)){            $content =  $this->read($filename,$type).$content;        }        return $this->put($filename,$content,$type);    }    /**     * 加载文件     * @access public     * @param string $filename  文件名     * @param array $vars  传入变量     * @return void             */    public function load($_filename,$vars=null){        if(!is_null($vars)){            extract($vars, EXTR_OVERWRITE);        }        include $_filename;    }    /**     * 文件是否存在     * @access public     * @param string $filename  文件名     * @return boolean          */    public function has($filename,$type=''){        return is_file($filename);    }    /**     * 文件删除     * @access public     * @param string $filename  文件名     * @return boolean          */    public function unlink($filename,$type=''){        unset($this->contents[$filename]);        return is_file($filename) ? unlink($filename) : false;     }    /**     * 读取文件信息     * @access public     * @param string $filename  文件名     * @param string $name  信息名 mtime或者content     * @return boolean          */    public function get($filename,$name,$type=''){        if(!isset($this->contents[$filename])){            if(!is_file($filename)) return false;           $this->contents[$filename]=file_get_contents($filename);        }        $content=$this->contents[$filename];        $info   =   array(            'mtime'     =>  filemtime($filename),            'content'   =>  $content        );        return $info[$name];    }}
 |