发新话题
打印

ThinkPHP的操作执行过程

ThinkPHP的操作执行过程

ThinkPHP中,系统会根据当前的URL来分析要执行的模块和操作。
这个分析工作由URL调度器来实现,官方内置了一个ThinkDispatcher插件来完成该调度。
在ThinkDispatcher调度器中,会根据
  • http://servername/appName/modeulName/actionName/params


来获取当前需要执行的项目(appName)、模块(moduleName)和操作(actionName),在某些情况下,appName可以不需要(通常是网站的首页,因为项目名称可以在入口文件中指定,这种情况下,appName就会被入口文件替代)
每个模块名称是一个Action文件,系统会自动寻找项目类库Action目录下面的相关类,如果没有找到,会在加载的插件中寻找是否存在该模块插件,如果依然没有,则抛出异常。
而actionName操作是首先判断是否存在模块的操作方法,如果不存在则会继续寻找父类中的方法,如果没有会尝试寻找插件操作方法,如果依然不存在,那么会寻找是否存在自动匹配的模版文件(该功能是最新添加的,Rails中有类似的实现,所以移植了过来),如果还是没有的话,就抛出异常了。
汇集PHP中文开发资源 - 打造中文PHP第一社群 - PHP开发资源网

TOP

发新话题