Code前端首页关于Code前端联系我们

ThinkPHP6空控制器,你明白吗?

terry 2年前 (2023-09-24) 阅读数 59 #后端开发

空控制器只占ThinkPHP6手册中很小的空间。那么什么是空白控制器呢?连这个词可能很多程序员都没有听过或者用过,所以这次我就把它送给你们。下面通过实际例子来谈谈ThinkPHP6空控制器。

我们在ThinkPHP6官方手册中搜索关键字“空控制器”就可以找到空控制器的章节内容。首先我们看一下官方对空控制器的定义:

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

也就是说,我们可以使用空控制器来自定义我们的错误页面。

本手册以单个应用为例,但现实中我们的项目大多数都有多个应用,所以接下来我们以多个应用为例。

假设我们项目域名www.xiangmu.com,我们有index和demo两个应用,两个应用下分别有各自的index控制器和index方法。

1。我找不到办法。

如果我们在浏览器中随机输入www.xiangmu.com/index/index/a,这个地址可以访问index应用下的index控制器中的a方法,但是我们的a方法并不存在。如果我们可以拒绝的话。这个无效请求怎么办?

然后我们这部分的空白控制器就会出现。

我们正在向索引管理器添加以下方法:

public function __call($method, $args){
    return 'error request!';
}

只要你使用索引管理器中找不到的方法,就去__call。现在我们已经到达了 __call(),我们可以为不存在的页面创建一个 404.html 并使用 call() 来渲染模板。

2。找不到控制器。

以上方法找不到。找不到控制器怎么办?我在浏览器中随机输入控制器,www.xiangmu.com/index/a/a。事实上,我们没有控制器或方法。如果我们可以拒绝这个无效请求怎么办?

然后使用以下Error.php控制器来解决问题。添加当前访问的是索引应用,我们将Error.php放在索引应用下面。同样的,我们也可以设置错误页面,比如404。

<?php
namespace app\index\controller;
use app\BaseController;
class Error extends BaseController{
    public function __call($method, $args){
            return 'error request!';
    }
}

以上就是关于空控制器的相关说明,赶紧去尝试一下吧!

php中文网认证作者:“王学勤”

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门