phpbb源码分析-模板引擎(2).pdf

phpbb源码分析-模板引擎(2).pdf

ID:52243844

大小:131.60 KB

页数:5页

时间:2020-03-25

phpbb源码分析-模板引擎(2).pdf_第1页
phpbb源码分析-模板引擎(2).pdf_第2页
phpbb源码分析-模板引擎(2).pdf_第3页
phpbb源码分析-模板引擎(2).pdf_第4页
phpbb源码分析-模板引擎(2).pdf_第5页
资源描述:

《phpbb源码分析-模板引擎(2).pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这篇文章继续phpbb3的模板代码分析,我将在这篇文章里面详细分析template.php的template类中的几个重要的函数。这些函数实现了phpbb3的模板引擎的核心功能。下面将会讲解三个template类中的函数:set_filenames,destroy,destroy_block_varsset_filenames这个函数,在phpbb3的其他地方有这个函数的使用,我这里举个简单的例子:在viewforum.php的文件中有下面这行代码$template->set_filenames(array('body'=>'viewforum_body.html'));下面我们来仔细的瞄一

2、下这个函数到底做了什么。/***Setsthetemplatefilenamesforhandles.$filename_array*shouldbeahashofhandle=>filenamepairs.*@accesspublic*/functionset_filenames($filename_array){if(!is_array($filename_array)){returnfalse;}foreach($filename_arrayas$handle=>$filename){if(empty($filename)){trigger_error("template->set_f

3、ilenames:Emptyfilenamespecifiedfor$handle",E_USER_ERROR);}$this->filename[$handle]=$filename;$this->files[$handle]=$this->root.'/'.$filename;if($this->inherit_root){$this->files_inherit[$handle]=$this->inherit_root.'/'.$filename;}}returntrue;}上面就是这个函数的所有代码,可以看见这个函数非常的简单,主要做的就是将参数中的数组存入$this->filena

4、me和$this->files中,可以看到这两个的区别只是,filename存的单单是文件名,files存的是文件的路径加文件名。而filename和files的作用将会在讲解functions_template.php的时候讲解到。当然这里我还是没有看出来inherit_root的作用,代码中的逻辑是如果设置了inherit_root,那么就将文件也存在files_inherit中。我在想,这个数组的作用也可能在functions_template.php中可以看到。destroy我们可以看一下destroy的函数,代码很简单,如下/***Destroytemplatedataset*@a

5、ccesspublic*/functiondestroy(){$this->_tpldata=array('.'=>array(0=>array()));}它做的只是$_tpldata的清空,之前有说到过,$_tpldata中存的都是模板的数据,而将$_tpldata的清空意味着模板的销毁。phpbb3的开发人员很聪明。这个函数我们就这样简单的过了,在已经查看的代码中我还没有找到有哪个地方调用了这个函数,以后找到的话补充上来。destroy_block_vars同理,顾名思义,这个函数是用来销毁$_tpldata中的块结构数据的,所谓的块结构数据大致有对象,数组等。/***Reset/emp

6、tycompleteblock*@accesspublic*/functiondestroy_block_vars($blockname){if(strpos($blockname,'.')!==false){//Nestedblock.$blocks=explode('.',$blockname);$blockcount=sizeof($blocks)-1;$str=&$this->_tpldata;for($i=0;$i<$blockcount;$i++){$str=&$str[$blocks[$i]];$str=&$str[sizeof($str)-1];}unset($str[$bl

7、ocks[$blockcount]]);}else{//Top-levelblock.unset($this->_tpldata[$blockname]);}returntrue;}我们可以看到一个简单的逻辑,首先根据这个函数,可以看到在phpbb3的模板中有两种形式的块数据名字定义,它们是:·blockvar·blockvar.subvar.subsubvar可以看到在上面的两种形式的blockvar形式,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。