自主研发一套PHP前端开发框架(23)

知识点缓冲区

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 这个控制参数可以控制是否开启文件缓存

你可能感兴趣的:(自主研发一套PHP前端开发框架(23))