上一篇写的是
phpbb3.0.5
的根目录的结构,并且简要的对各个目录和文件做了功能分析。这篇文章是对
phpbb3.0.5
的引擎代码的分析,并且会详细的分析它的设计理念及一些最最重要的函数的实现分析。
在
includes
目录下藏着
phpbb3.0.5
的两个模板引擎的实现文件
:template.php
和
functions_template.php.
在
functions_template.php
文件的开头的注释中,写着
phpbb3.0.5
模板
的代码有两个来源,
PHPLib
和
Smarty,phpbb3
的模板类的接口是借鉴了
PHPLib
的接口,模板语言是
借鉴了
Smarty
的。在查看
styles
下面的各个文件夹后,你可以发现在这些文件夹下面藏着
phpbb3
的模
板文件,后缀一般都为
.HTML
,打开一个模板文件你可以看到类似下面的代码:
<!-- IF S_FORUM_RULES -->
<div class="rules">
<div class="inner">
<!-- IF U_FORUM_RULES -->
<a
href="{U_FORUM_RULES}">{L_FORUM_RULES}</a>
<!-- ELSE -->
<strong>{L_FORUM_RULES}</strong>
{FORUM_RULES}
<!-- ENDIF --></div>
</div>
<!-- ENDIF -->
可以看到里面有一些用
<!–
–和
>
包含起来的类似逻辑判断的语句和用
{}
包含一来的类似值一样的东西。我
猜你已经想到了,这些代码可以被
phpbb3
的模板引擎解析成
php
代码,你肯定对
phpbb3
的模板引擎
如何解析这些奇怪代码很感兴趣吧?别急,接下来我会带你去
phpbb3
的模板引擎实现代码中一探究竟。
好了,现在我们来到了一个叫做
template.php
的文件中,这个文件中有一些
phpbb3
开发人员所写的
注释,但是不是很详细。下面一一的较为详细的来讲解其中的一些成员函数和代码。因为这个文件有几百行
的代码,一起粘贴上来的话阅读会不方便,所以我粘贴一部分,讲解一部分。
if (!defined('IN_PHPBB'))
{
exit;
}
这个代码之前的
index.php
文章的分析中已经讲解过了,是为了安全性。如果你直接在
url
中请求这个文
件,将会看到一片空白。
好了接下来我们正式进入
template
模板类的代码。