3、的类似逻辑判断的语句和用{}包含一来的类似值一样的东西。我猜你已经想到了,这些代码可以被phpbb3的模板引擎解析成php代码,你肯定对phpbb3的模板引擎如何解析这些奇怪代码很感兴趣吧?别急,接下来我会带你去phpbb3的模板引擎实现代码中一探究竟。好了,现在我们来到了一个叫做template.php的文件中,这个文件中有一些phpbb3开发人员所写的注释,但是不是很详细。下面一一的较为详细的来讲解其中的一些成员函数和代码。因为这个文件有几百行的代码,一起粘贴上来的话阅读会不方便,所以我粘贴一部分,讲解一部分。if(!defined('IN_PHPBB')){exit;}这个代码之前的in
4、dex.php文章的分析中已经讲解过了,是为了安全性。如果你直接在url中请求这个文件,将会看到一片空白。好了接下来我们正式进入template模板类的代码。/**variablethatholdsallthedatawe'llbesubstitutinginto*thecompiledtemplates.Takesform:*-->$this->_tpldata[block][iteration#][child][iteration#][child2][iteration#][variablename]==value*ifit'saroot-levelvariable,it'llbelike
5、this:*-->$this->_tpldata[.][0][varname]==value*/var$_tpldata=array('.'=>array(0=>array()));var$_rootref;//Rootdirandhashoffilenamesforeachtemplatehandle.var$root='';var$cachepath='';var$files=array();var$filename=array();var$files_inherit=array();var$files_template=array();var$inherit_root='';//this
6、willhashhandlenamestothecompiled/uncompiledcodeforthathandle.var$compiled_code=array();这些是template类中的成员变量,在php中默认将”_”开头的类成员变量解析称为private成员。这里phpbb3的开发人员还是留了一些注释给我们,可以让我们根据注释和变量名字大致猜到这些变量时做什么用的。$_tpldata这个变量是template类的核心变量,这个array变量存储的是用assign_*_var成员函数赋值的值,后面我们会详细的讲到assign系列赋值函数$_rootref这个变量是对$_tp
7、ldata['.'][0]的引用,我们可以看到这个值默认是一个空数组。$root这个变量用于存储模板所在的根目录,啥叫根目录?假如说我有三个模板文件:1.html,2.html,3.html,并且这三个在一个叫D:phpbb3stylesatemplate的文件夹下面,那么[D:phpbb3stylesatemplate]就是这个$root的值,在后面的函数中还会牵涉到根目录继承
此文档下载收益归作者所有