入口文件是应用的单一入口,对应用的所有请求都定向到应用入口文件,系统会从URL参数中解析当前请求的模块、控制器和操作:
模块/控制器/操作URI模式的配置在ThinkPHP--》Conf--》convention.php中进行配置。
/*表示URL区分大小写 true则表示不区分大小写*/\'URL_MODEL\' => 1,
// URL访问模式,可选参数0、1、2、3,代表以下四种模式:
0 (普通模式);
1 (PATHINFO 模式);
2 (REWRITE 模式);
3 (兼容模式)
默认为PATHINFO 模式
在默认的PATHINFO 模式下,我们也可以使用普通模式的方式进行访问:
?m=home&c=index&a=test其中参数解释如下:
m:即Module,模式
c:controller,控制器
a:action,方法
URL模式
如果我们直接访问入口文件的话,由于URL中没有模块、控制器和操作,因此系统会访问默认模块(Home)下面的默认控制器(Index)的默认操作(index),因此下面的访问是等效的:
三、Thinkphp控制器 3.1、控制器的定义
ThinkPHP的控制器是一个类,而操作则是控制器类的一个公共方法(Public function)。
参考:https://www.kancloud.cn/manual/thinkphp/1713
<?phpnamespace Home\Controller; //使用Home\Controller控制器,对应的目录文件
use Think\Controller; //表示引入 Think\Controller 类库.
class IndexController extends Controller {
public function hello(){
echo \'hello,thinkphp!\';
}
}
Home\IndexController类就代表了Home模块下的Index控制器,而hello操作就是Home\IndexController类的hello(公共)方法。
当访问 后会输出:
hello,thinkphp! 3.2、控制器操作A("[模块/]控制器标志")实例化控制器对象。
R("[模块/]控制器标志/操作方法")实例化控制器对象同时调用指定对象。
3.2.1 A方法跨控制器实例化后,再调用被实例化对象的方法
UserControllerclass.php
$User = A(User); $User->index();
3.2.2 R方法UserControllerclass.php
R(\'$User->index()\');
示例:
UserController.class.php内容如下
<?php
namespace Home\Controller;
use Think\Controller;
class UserController extends Controller {
public function index(){
echo \'User Controller\';
}
}
使用Index控制器去调用User控制器中的方法
public function getUserIndex(){$User = A(\'User\');
$User -> index(); // A方法
//R(\'User/index\'); // R方法
} 3.2.3 Action参数绑定
参考:https://www.kancloud.cn/manual/thinkphp/1715
Action参数绑定是通过直接绑定URL地址中的变量作为操作方法的参数,可以简化方法的定义甚至路由的解析。
Action参数绑定功能默认是开启的,其原理是把URL中的参数(不包括模块、控制器和操作名)和操作方法中的参数进行绑定。