第一个,也是最受关注的目的,设想了这样一种情况:一个程序员团队编写生成页面内容的 PHP 脚本,而另一个设计团队设计 HTML 和图形来控制页面的最终外观。 功能和布局分离的基本思想是让这两类人能够编译和使用一组独立的文件:程序员只需要关心这些只包含PHP代码的文件,而不需要关心关于页面的外观; 使用您最熟悉的可视化编辑器来设计页面布局,而不必担心破坏页面中嵌入的任何 PHP 代码。
如果您之前看过一些有关 PHP 模板的教程,那么您应该已经了解模板是如何工作的。 考虑一个简单的页面部分:页面顶部是标题,右侧是导航栏,其余是内容区域。
可以看出页面是如何由模板构建的:主模板控制整个页面的布局; header 模板和 leftnav 模板控制页面的公共元素。 大括号“{}”内的标识符是内容占位符。 使用模板的主要好处是界面设计者可以根据自己的意愿编辑这个文件,例如设置、修改颜色和图形,或者完全改变页面的布局。 界面设计者可以使用任何常见的HTML编辑器或可视化工具来编辑这种页面,因为这种文件只包含HTML代码,没有任何PHP代码。
PHP代码全部保存到一个单独的文件中,该文件是页面URL实际调用的文件。 Web服务器通过PHP引擎解析文件,然后将结果返回给浏览器。 通常,PHP 代码始终动态生成页面内容,例如查询数据库或执行某种计算。 下面是一个反例:
//这里的PHP代码设置$content包含适当的页面内容 $tpl->assign('CONTENT',$content);$tpl->parse('HEADER','header');$tpl->parse( 'LEFTNAV','leftnav');$tpl->parse('MAIN','main');$tpl->FastPrint('MAIN');?>
这里我们使用流行的 FastTemplate 模板类,但许多其他模板类的基本思想是相同的。 首先,你实例化一个类php全套网站模板,告诉它去哪里找模板文件,哪个模板文件对应页面的哪一部分; 下一步是生成页面内容,并将结果赋值给内容的标识符; 之后依次解析文件中的各个模板,模板类会进行必要的替换操作; 最后将解析结果输出到浏览器。
这个文件完全由PHP代码组成,不包含任何HTML代码,这是它最大的优点。 现在,PHP 程序员可以专注于编写生成页面内容的代码,而不必担心如何生成 HTML 以正确格式化最终页面。
很容易看出使用模板还有第二个好处。 如上例所示,页面右侧的导航栏保存为单独的文件,我们只需要编辑此模板文件即可更改所有页面右侧的导航栏。
防止重复的页面元素
“这真是太好了”,你可能会想,“我的主站点是由很多静态页面组成的。现在我可以从所有页面中删除它们的公共部分,更新那些公共部分太麻烦了。然后我可以使用模板来制作易于维护的统一页面布局。” 但事情并没有那么简单,“大量静态页面”就说明了问题。
考虑前面的反例。 该示例实际上只有一个 example.php 页面。 它之所以能生成所有页面,是因为它使用URL中的查询字符串从数据库等信息源动态构造页面。
我们大多数人运行的程序不一定有数据库支持。 我们的大部分内容都是由静态页面组成,然后在 PHP 中添加一些动态功能,例如搜索引擎、反馈表单等。那么,如何在这些页面上应用模板呢?
最简单的方法就是为每个页面复制一个PHP文件,然后在每个页面中将PHP代码中代表内容的变量设置为相应的页面内容。 例如,假设有三个页面,分别是主页(home)、关于(about)和产品(product),我们可以分别使用三个文件来生成它们。 这三个文件的内容如下:
我希望你能喜欢这个
";$tpl->分配('内容',$content);$tpl->解析('HEADER','标题');$tpl->解析('LEFTNAV','leftnav');$tpl->解析('MAIN','main');$tpl->FastPrint('MAIN');?>
事实上,这些方法存在三个问题:我们必须为每个页面复制这段涉及模板的复杂 PHP 代码,这使得页面像复制常见页面元素一样难以维护; 内容变量参数会很困难php全套网站模板,因为我们要处理很多特殊字符。
解决这个问题的关键是将PHP代码和HTML内容分离。 即使我们无法删除文件中的所有 HTML 内容,我们也可以删除大部分 PHP 代码。
静态模板框架:
ob_end_clean();$tpl->分配('内容',$content);$tpl->解析('HEADER','标题');$tpl->解析('LEFTNAV','leftnav');$tpl ->parse('MAIN','main');$tpl->FastPrint('MAIN');}?>
AgeStart 函数首先创建并设置模板实例,然后启用输出缓存。 随后,页面本身的所有 HTML 内容都将进入缓存。 pageFinish函数取出缓存中的内容,然后在模板对象中指定此内容,最后解析模板并输出完成的页面。
这就是整个模板框架的整个工作流程。 首先编译一个包含网站每个页面通用元素的模板,然后删除所有页面中所有通用的页面布局代码,并替换为三行永远不需要更改的PHP代码; 然后将 FastTemplate 类文件和 prepend.php 添加到包含路径,这样您就可以获得一个对页面布局进行集中控制、更好的可靠性和可维护性的站点,而且在站点级别进行大规模更改也相当容易。
发表评论