控制器都存放在app/controller下,当然也可以通过config/route.php中的'controller_layer'来进行修改。一般来说,创建控制器后,推荐继承基础控制器来获得更多的方法(extends BaseController),基础控制器仅仅提供了控制器验证功能,并注入了 think\App和 think\Request。这两个的大致使用方法如下:
app->getBasePath();
// 返回当前方法名
return $this->request->action();
}
}
关于控制器的编码规范:
1、类名和文件名保持一致,采用驼峰式命名法(首字母大写)。控制器默认执行index方法,所以在test类中,如果有两个方法index()和hello(),访问的url分别如下:
index:http://localhost/tp6/public/test/
hello:http://localhost/tp6/public/test/hello/
2、特殊的类名称访问方式
如下的类定义,可以使用如下两种url访问:
http://localhost/tp6/public/helloworld
http://localhost/tp6/public/hello_world
3、在学到模型时,模型名称需要与控制器相同,在这种情况下,可以将config/route.php中的字段'controller_suffix'字段进行修改,此时则需要在命名时添加Controller后缀,访问时不添加Controller后缀才能访问成功。
在单应用模式下,我们可以给项目定义一个Error控制器类用以提醒错误,在app/controller中创建Error.php,具体代码如下:
在该项目中若出现错误,则返回该类下index方法的返回值。
这种方法不受调试模式的约束(.env中开启和关闭调试模式的报错信息如下)
多级控制器是在app\controller中新建目录并创建控制器,这里通过实例来展示其访问方式,建立如下的多级控制器,其中包含了如下的方法:
在这里,访问index()方法的url路径为:
http://localhost/tp6/public/group.blog/或http://localhost/tp6/public/group.blog/index
访问read()方法的url路径为:
http://localhost/tp6/public/group.blog/read
这里先介绍不需要安装插件的渲染输出。不推荐使用 die、exit等 PHP方法中断代码执行输出。
1、 采用return即可返回。这种方法不能输出数组。
2、 在return的基础上使用json函数输出。例如:return json(arr);
3、 使用halt($data)可以立即输出$data不执行后面的内容。
在ThinkPHP中,我们使用如下的方法来访问数据库,这种访问方式是基于PDO模式的(社么是PDO?)。
在连接数据库之前,需要检查.env和app\config\database.php中的相关配置。详细的过程这里不再赘述。在单控制器中创建DataTest.php,这里展示连接数据库的示例代码,不做具体解释,后面会有详细说明。
table('user')->select();
return $user;
}
public function demo(){
$user = Db::connect('sfkbbs')->table('sfk_content')->select();
return $user;
}
}
这里先介绍模型的构建方法,需求为用模型访问数据库:
1、在app目录下创建model目录,创建User.php的模型类(类的名称与数据库中表的名称一致),其中定义了受保护的字段$connection,用于切换app\config\database.php中配置的数据库。
2、使用控制器调用该模型,在DataTest.php中来访问该模型,具体访问代码如下:
3、以该项目为例,访问的url链接为:http://localhost/tp6/public/datatest/getsfk_content