ThinkPHP里面会根据当前癿URL来分析要执行的模块和操作。返个分析工作由URL调度器来实现,官方内置了Dispatcher类来完成该调度。在Dispatcher调度器中,会根据
http://domainName/appName/moduleName/actionName/params
来获取当前需要执行的项目(appName)、模块(moduleName)和操作(actionName),在某些情冴下,appName可以不需要(通常是网站的首页,因为项目名称可以在入口文件中指定,这种情况下,appName就会被入口文件替代),另外针对不同的URL模式设置系统会进行不同的智能识别。
其实是定位到myApp项目的Index模块的index操作,因为系统在没有指定模块和操作的时候,会执行默认的模块和操作,这个在ThinkPHP的惯例配置里面是Index模块和index操作。因此下面的URL和上面的结果是相同的:
http://localhost/myApp/index.php/Index/index/
通过项目配置参数,我们可以改变这个默认配置。
系统还支持分组模式和URL路由的功能,这些都能够带来URL的不同体验。
在thinkphp中第一个实例的执行过程分析:
首先程序入口是Myapp下的index.php文件,其中require(THINK_PATH."/ThinkPHP.php");是对ThinkPHP.php 的调用包含了常用的配置调试信息,然后程序会从APP::run();开始执行,找到需要的类,相关的文件即默认的Lib/action目录下你声明的类,因为THINKPHP 是根据名称判断类的,如果你写了类那么格式就应该是:**.class.php格式的。找到相关的类后如果不指定会默认执行类中的index()函数。
以上过程的URL传递是:http://localhost/Myapp/index.php/index/index
其中index.php就是入口文件,随后的index是你定义的index名字的类,最后一个index是你定义的index类中的index方法。