首页 php教程 PHP开发 一个PHP模板,主要想体现一下思路

一个PHP模板,主要想体现一下思路

Dec 14, 2016 am 11:34 AM

欲在速度和易用(主要指的是美工设计的方便性)之间取得一个平衡点.于是采用了由html文件生成php文件的办法(编译?) 
也想在分离显示逻辑和分离html代码之间平衡一下 

例如一个论坛首页(index.php): 

代码:    


require('./template.php');
//由html生成的php文件的前缀,区别使用多种风格.
$tpl_prefix = 'default';
//模板文件名
$tpl_index = 'index';

$tpl = new Template($tpl_prefix);

$cats = array(
array('forum_id'=>'1','forum_cat_id'=>'0','forum_name'=>'PHP学习'), 
array('forum_id'=>'2','forum_cat_id'=>'0','forum_name'=>'MYSQL学习') 
); 
$forums = array( 
array('forum_id'=>'3','forum_cat_id'=>'1','forum_name'=>'PHP高级教程'), 
array('forum_id'=>'4','forum_cat_id'=>'1','forum_name'=>'PHP初级教程'), 
array('forum_id'=>'5','forum_cat_id'=>'2','forum_name'=>'MYSQL相关资料') 
); 

if ($cats) 

if ($tpl->chk_cache($tpl_index))//检查判断是否需要重新生产PHP模板文件. 

$tpl->load_tpl($tpl_index);//加载html模板文件. 
//替换PHP语句 
$tpl->assign_block("{block_cat}",""); 
$tpl->assign_block("{/block_cat}",""); 
$tpl->assign_block("{block_forum}","
\nif(\$forum['forum_cat_id'] == \$cat['forum_id']) {?>"); 
$tpl->assign_block("{/block_forum}",""); 
//生产PHP模板文件. 
$tpl->write_cache($tpl_index); 


//包含PHP模板文件. 
include($tpl->parse_tpl($tpl_index)); 
?>     


对应的html模板文件(index.html): 

代码:    


{block_cat} 

 
 
 
 
{block_forum} 
 
 
 
{/block_forum} 
{=$cat['forum_name']}
{=$forum['forum_name']}
 

 
{/block_cat}     


经过处理,里面的{block_forum}{block_cat}标签被替换成PHP循环语句,用于显示数组种所有元素. 

生成的PHP模板文件(default_index.php): 

代码:    


 

 
 
 
 
if($forum['forum_cat_id'] == $cat['forum_id']) {?> 
 
 
 
}?> 
 

 
     


default_index.php被包含在index.php,这样就可以正常显示了. 

这样,HTML模板文件可以用dw来进行修改美化,美工人员应该会方便一些. 

template.php 

代码:    


/*********************************************************************************
* 模板类(Template)
* 最后修改时间:2004.4.07 本论坛使用
*
*
*
**********************************************************************************/
class Template {

//$this->$template,储存模板数据. 
var $template = ''; 

//模板路径. 
var $tpl_path = ''; 

//模板前缀(风格名称). 
var $tpl_prefix = ''; 

//cache路径(编译后的路径). 
var $cache_path = ''; 

//css文件路径. 
var $css_path = ''; 

//header文件路径. 
var $header_path = ''; 

//footer文件路径 
var $footer_path = ''; 

/** 
* 初始化模板路径. 
*/ 
function Template($root = 'default') 

//模板前缀(风格名称). 
$this->tpl_prefix = $root; 
//模板文件路径. 
$this->tpl_path = './templates/' . $root . '/'; 
//生成的PHP文件存放路径. 
$this->cache_path = './template_data/' .$this->tpl_prefix . '_'; 
return true; 


/** 
* chk_cache,检查"编译"后的模板是否需要更新,判断依据:最后修改时间,"编译"文件是否存在. 
*/ 
function chk_cache($tpl_index) 

$tpl_file = $this->tpl_path . $tpl_index . '.html'; 
$cache_file = $this->cache_path . $tpl_index . '.php'; 
//判断是否需要更新. 
if(!file_exists($cache_file)) 

return true; 

elseif(filemtime($tpl_file) > filemtime($cache_file)) 

return true; 



/** 
* 输出模板文件. 
*/ 
function parse_tpl($tpl_index,$message='') 

return $this->cache_path . $tpl_index . '.php'; 


/** 
* 加载模板文件. 
*/ 
function load_tpl($tpl_index) 

$tpl_file = $this->tpl_path . $tpl_index . '.html'; 
$fp = fopen($tpl_file, 'r'); 
$this->template = fread($fp, filesize($tpl_file)); 
fclose($fp); 


/** 
* 替换变量,并且"编译"模板. 
*/ 
function write_cache($tpl_index) 


$cache_file = $this->cache_path . $tpl_index . '.php'; 

//变量显示. 
$this->template = preg_replace("/(\{=)(.+?)(\})/is", "", $this->template); 

//界面语言替换. 
$this->template = preg_replace("/\{lang +(.+?)\}/ies", "\$lang['main']['\\1']", $this->template); 

$fp = fopen($cache_file, 'w'); 
flock($fp, 3); 
fwrite($fp, $this->template); 
fclose($fp); 


/** 
* 替换block. 
*/ 
function assign_block($search,$replace) 

$this->template = str_replace($search,$replace,$this->template); 


?>    

感谢您的阅读,想要获取更多相关内容请关注php中文网(www.php.cn)!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)