首页 理论教育PHPMVC开发实战:行为概述与ThinkPHP行为机制

PHPMVC开发实战:行为概述与ThinkPHP行为机制

【摘要】:在这一过程中,开发人员需要对URL请求进行处理,例如安全检测、URL映射等,只能在运算进行前使用特定的文件进行拦截或处理。ThinkPHP的行为机制本质上是一种URL拦截处理机制,行为的引入把过去没有生命周期概念的PHP应用添加了生命周期的概念。图11-8 ThinkPHP行为执行过程内置行为是确保系统能够运行的基础,一般情况下开发人员不需要扩展内置的行为。如图11-8所示,项目首先执行的行为标签是app_init,一直到app_end标签,中间的标签有些有对应的行为,有些没有。

传统的PHP开发通常都是根据URL请求然后进行后台运算的。在这一过程中,开发人员需要对URL请求进行处理,例如安全检测、URL映射等,只能在运算进行前使用特定的文件进行拦截或处理。在项目小的情况下这不会成为问题,但当项目文件太多时,拦截的效率就明显不足,此时再增加拦截功能就会变得困难。ThinkPHP的行为机制本质上是一种URL拦截处理机制,行为的引入把过去没有生命周期概念的PHP应用添加了生命周期的概念。行为机制将项目拆成若干个功能片段,在应用执行的不同阶段,这些功能片段会被执行,同时执行与之相对应的行为。

系统内置了9大行为,分别为CheckRoute、LocationTemplate、ParseTemplate、ShowPageTrace、ShowRuntime、TokenBuild、ReadHtmlCache、WriteHtmlCache。这些行为在程序运行到不同的阶段时会被触发(可以同时触发多个行为),如图11-8所示。

978-7-111-42852-7-Part02-657.jpg

图11-8 ThinkPHP行为执行过程(www.chuimin.cn)

内置行为是确保系统能够运行的基础,一般情况下开发人员不需要扩展内置的行为。Behavior类是所有行为类库的基类,系统允许开发人员直接继承该类实现行为扩展。如图11-8所示,项目首先执行的行为标签是app_init,一直到app_end标签,中间的标签有些有对应的行为,有些没有。自定义行为扩展通常就是定义在这些只有标签没有行为的运行阶段中。

这里有一个非常重要的标签概念。所谓的标签事实上就是行为的别名,项目不能直接执行行为类库,只能执行标签(标签也可以自定义),一个标签可以对应若干个行为类,如果需要调用扩展行为(包括系统内置的扩展行为),可以直接在Conf/tags.php文件中定义标签执行的行为类。

标签允许同时出现,默认情况下,后面出现的标签会覆盖前面出现的标签。如果标签为空,则系统放弃执行,例如'app_end'=>array('')。接下来将结合示例代码,详细介绍内置行为的使用。