知识点缓冲区
1.打开输出缓冲区ob_start()
2.当缓冲区激活时,所有来自PHP程序的非文件头信息
均不会发送,而是保存在内部缓冲区
3.期间可以使用ob_get_contents来获取缓冲区内容(
你可以任意修改)
4.使用ob_clean()来清除缓冲区内容。
5.echo 你修改过的内容。
_Master.inc代码
<?php
//所有controller的父类 抽象类
abstract class _Master{
var $_view='index';//模板名称
var $_vars = array();
var $_cachetime=0;//缓存时间
function setView($viewName){
$this->_view = $viewName;
}
function getView(){
return LKPHP_PATH.'/MVC/View/'.LKPHP_VIEWPATH.'/'.$this->_view.'.'.LKPHP_EXTENSION;
}
function setVar($varName,$varValue){
//设置变量
$this->_vars[$varName] = $varValue;
}
function hasVarCache(){
if(the_cache($this->_view)){
return true;
}
return false;
}
function run(){
//解包变量
if($this->_cachetime > 0){
$getVars_cache = the_cache($this->_view);
if($getVars_cache){
echo '<b>这是从memcache中获取的数据</b><br/>';
extract($getVars_cache);
}else{
//同时要设置缓存
set_cache($this->_view,$this->_vars,0,$this->_cachetime);
extract($this->_vars);
}
}else{
extract($this->_vars);
}
extract($this->_vars);
if(LKPHP_IS_OPEN_FILE_CACHE){
//这里我们要讲写入缓冲区
$tpl='';
ob_start();
//加载头部模板
include(LKPHP_PATH.'/MVC/View/'.LKPHP_VIEWPATH.'/'.LKPHP_VIEWHEADER.'.'.LKPHP_EXTENSION);
include($this->getView());//加载模板body
include(LKPHP_PATH.'/MVC/View/'.LKPHP_VIEWPATH.'/'.LKPHP_VIEWFOOTER.'.'.LKPHP_EXTENSION);//尾部
$tpl = ob_get_contents();
ob_clean();
$file_name = md5($_SERVER['REQUEST_URI']);
$cache_file='Cache/'.$file_name;
if(file_exists($cache_file)){
echo file_get_contents($cache_file);
}else{
file_put_contents($cache_file,$tpl);
echo $tpl;
}
}else{
//加载头部模板
include(LKPHP_PATH.'/MVC/View/'.LKPHP_VIEWPATH.'/'.LKPHP_VIEWHEADER.'.'.LKPHP_EXTENSION);
include($this->getView());//加载模板body
include(LKPHP_PATH.'/MVC/View/'.LKPHP_VIEWPATH.'/'.LKPHP_VIEWFOOTER.'.'.LKPHP_EXTENSION);//尾部
}
}
//魔术方法
function __get($p){
$c=load_class($p);
return $c;
}
}
?>
lkphp.conf
<?php
define('LKPHP_PATH', '');
define('LKPHP_EXTENSION', 'php');
define('LKPHP_VIEWPATH', 'default');
define('LKPHP_VIEWHEADER', 'header');
define('LKPHP_VIEWFOOTER', 'footer');
define('LKPHP_FORBIDDEN_TYPE',"'header','footer','functions','install','_Master'");//禁止访问的type类
define('LKPHP_UNSAFEWORDS', 'fuck,日,中国共产党,国务院,毛泽东');
define('LKPHP_USERCOOKIE','userlogin');//用户登录cookie保存的key
define('LKPHP_DESKEY','123456789');//加密的Key
define('LKPHP_MEMCACHE_IP','127.0.0.1');//memcache ip
define('LKPHP_MEMCACHE_PORT','11211');//port
define('LKPHP_IS_OPEN_FILE_CACHE',false);//是否开启静态缓存
?>
这里新增了一个控制参数 LKPHP_IS_OPEN_FILE_CACHE 这个控制参数可以控制是否开启文件缓存