在
ThinkPHP中,
系统会根据当前的URL来分析要执行的模块和操作。
这个分析工作由URL调度器来实现,
官方内置了一个ThinkDispatcher插件来完成该调度。
在ThinkDispatcher调度器中,会根据
- http://servername/appName/modeulName/actionName/params
来获取当前需要执行的
项目(appName)、模块(moduleName)和操作(actionName),在某些情况下,appName可以不需要(通常是网站的首页,因为项目名称可以在入口
文件中指定,这种情况下,appName就会被入口文件替代)
每个模块名称是一个Action文件,系统会自动寻找项目类库Action目录下面的相关类,如果没有找到,会在加载的插件中寻找是否存在该模块插件,如果依然没有,则抛出异常。
而actionName操作是首先判断是否存在模块的操作方法,如果不存在则会继续寻找父类中的方法,如果没有会尝试寻找插件操作方法,如果依然不存在,那么会寻找是否存在自动匹配的模版文件(
该功能是最新添加的,Rails中有类似的实现,所以移植了过来),如果还是没有的话,就抛出异常了。