首页 理论教育实战教程:PHPMVC开发中的外部文件使用

实战教程:PHPMVC开发中的外部文件使用

【摘要】:与PHP的include不同,在模板中使用include对引擎的解释过程不受任何影响,就算被包含的文件不存在也不会被中断执行。另外URL模式尽量不要使用自定义的URL REWRITE模式,否则目录层级有可能发生改变,导致include找不到文件。

在ThinkPHP中,允许使用include标签包含页面。与PHP的include不同,在模板中使用include对引擎的解释过程不受任何影响,就算被包含的文件不存在也不会被中断执行。合理地使用include可以让页面变得整洁,整站的模板维护更加容易,但滥用include标签也会造成代码灾难,降低模板的通用性。ThinkPHP还提供了import标签及load标签,这些标签作用类似,但也有各自的适用对象,下面分别介绍。

1.include标签

这里的include标签与PHP的include语句不同,模板中的include模板只能解释静态的html等文件,而不能直接包含PHP文件,使用过shtml的读者应该会熟悉<!--#include file=""top.html""-->语句,该语句通常用于包含第三方文件,例如广告代码、页面导航、版权说明等。这里的include标签和shtml中的include语句作用是一样的,只不过形式不一样而已。一条最简单的include标签语句如以下代码所示。

这里需要注意的是,include包含的静态文件必须位于当前网站下,不能是一个URL,该文件是一个完整的文件路径,通常从入口文件算起。另外URL模式尽量不要使用自定义的URL REWRITE模式,否则目录层级有可能发生改变,导致include找不到文件。

include标签不仅可以包含完整路径的静态文件,也可以包含控制器动作。前面已经介绍过,一个控制器动作就相当于一个页面,所以使用include标签是允许直接包含控制器动作的(动作必须使用this->display()输出模板)。如以下代码所示。

以上代码表示包含当前控制器的head动作,如果head动作不在当前控制器,那么需要使用“:”分隔符,如以下代码所示。

在包含文件的同时,include标签还支持向目标页面传递额外的变量参数,这些参数会被模板引擎解释成PHP变量,如以下代码所示。

将要传递的参数附加到file属性值即可,这些参数可以在目标页面head.html文件中使用“[]”符号进行配对,如以下代码所示。(www.chuimin.cn)

利用这些特性,设计人员可以方便地在页面中嵌入外部网页,实现页面布局、广告系统等实用的功能。使用include标签关键是网站的URL模式,读者需要计算好路径;过多地包含控制器动作会导致代码维护困难;在部署时,如果被包含的页面发生了改变,那么需要开发者手动删除当前视图模板缓存,否则将看不到最终效果。

2.import标签

import标签与include标签一样都可以引用外部文件,但import标签具有针对性,import标签最常用于导入JavaScript或CSS文件,通过属性type指定文件的类型就可正确地导入文件,避免了手动编写脚本的步骤,提高了界面的整洁性。如以下代码所示。

import标签在解释路径时,使用“.”代替“/”,默认的路径由Public目录开始算起,文件不需要后缀名。如上面的Js.Util.Array,解释后的路径为/Public/Js/Util/Array.js。import支持一次性导入多个文件,多文件之间使用“,”分隔符。

import标签通过属性type指定需要导入的文件类型,默认导入JavaScript脚本文件,更改type属性值可以改变导入的文件类型,如type=”css”。

import标签以包的形式导入网站中公共静态资源文件,如果需要导入第三方网站或者使用显式的路径资源文件,可以使用load标签,该标签的使用方式和import标签一样,如以下代码所示。

虽然默认的模板引擎提供了灵活方便的文件导入标签,但如前面所述一样,这些标签最终都是转换成标准的HTML代码,使用导入标签虽然一定程度上提高了开发效率,但页面中太多的标签一起使用也需要牺牲运行效率。