IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> thinkphp6控制器 -> 正文阅读

[PHP知识库]thinkphp6控制器

一:控制器定义

控制器,即 controller,控制器文件存放在 controller 目录下。

控制器有以下若干知识点:

  • 控制器下的每一个php类文件一般只有一个类,每个类必须有一个index函数,否则报错。
  • 如果想改变系统默认的控制器文件目录,可以在 config 目录下的 route.php 配置:'controller_layer' => '修改后的名称'
  • 类名和文件名大小写保持一致,并采用驼峰式(首字母大写)
  • 如果使用的是单应用模式,那么控制器的类的定义如下,控制器类文件的实际位置是app\controller\HelloWorld.php,在没有定义路由的情况下访问的URL地址是:http://localhost/index.php/HelloWorld/hello
    ,对于路径中的大写可以使用_换成小写,如http://localhost/hello_world/hello,事实上http://localhost/index.php/helloworld/hello也可以,但不推荐。
<?php
namespace app\controller;

class HelloWorld 
{
    public function hello()
    {
        return 'hello,world!';
    }
}
  • 如果希望避免引入同名模型类的时候冲突,可以在route.php配置文件中设置'controller_suffix' => true,那样的话就意味着使用控制器后缀,于是类名就需要添加Controller后缀,如下,相应的类文件也要改为app\controller\HelloWorldController.php
<?php
namespace app\controller;

class HelloWorldController
{
    public function login()
    {
        return 'login';
    }
}
  • 控制器一般不需要任何输出,直接return即可。并且控制器在json请求会自动转换为json格式输出。也可以调用json($data)手动转化为json格式。
  • 不要在控制器中使用包括die、exit在内的中断代码。如果你需要调试并中止执行,可以使用系统提供的halt助手函数:halt('输出测试')

二:基础控制器

大多数情况下,官方建议给你的控制器继承一个基础控制器。默认安装后,系统提供了一个app\BaseController基础控制器类,你可以对该基础控制器进行修改。该基础控制器仅仅提供了控制器验证功能,并注入了think\Appthink\Request对象,因此你可以直接在控制器中使用app和request属性调用think\App和think\Request对象实例。至于控制器验证我水平有限,可能在以后的博客中添加相关内容。。。
在这里插入图片描述

三:空控制器

空控制器的概念是指当系统找不到指定的控制器名称的时候,系统会尝试定位当前应用下的空控制器(Error)类,利用这个机制我们可以用来定制错误页面和进行URL的优化。
在这里插入图片描述

四:多级控制器

所谓多级控制器,就是在控制器 controller 目录下再建立目录并创建控制器,我们在 controller 目录下建立 group 目录,并创建 Blog.php 控制器,而此时,我们需要访问的地址为:http://localhost:8000/group.blog,这样可能有点别扭,但是可以使用路由的知识改变该路径。

在这里插入图片描述由于URL访问不能访问默认的多级控制器(可能会把多级控制器名误识别为URL后缀),因此建议所有的多级控制器都通过路由定义后访问,如果要在路由定义中使用多级控制器,可以使用Route::get('group/blog','group.blog/index')
在这里插入图片描述

五:资源控制器

资源控制器可以让你轻松的创建RESTFul资源控制器,可以通过命令行生成需要的资源控制器,例如生成index应用的Blog资源控制器使用:

php think make:controller index@Blog

如果不想新建一个文件夹而是在原本的controller下创建,可以使用以下命令:

php think make:controller Blog

或者使用完整的命名空间生成:

php think make:controller app\index\controller\Blog

如果只是用于接口开发,可以使用:

php think make:controller index@Blog --api

然后你只需要为资源控制器注册一个资源路由:

Route::resource(‘blog’, ‘Blog’);

这个资源路由表示注册了一个名称为blog的资源路由到Blog控制器,系统会自动注册7个路由规则,如下:

标识请求类型生成路由规则对应操作方法(默认)
indexGETblogindex
createGETblog/createcreate
savePOSTblogsave
readGETblog/:idread
editGETblog/:id/editedit
updatePUTblog/:idupdate
deleteDELETEblog/:iddelete

关于资源路由的相关介绍将会在后续博客内展开。
在这里插入图片描述
如果想要了解更多相关知识,可以前往我的个人博客:eyes++的个人空间

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-27 11:38:35  更:2021-08-27 11:38:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 4:22:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码