6控制器定义
未知
2021-07-04 10:27:36
0

控制器定义

控制器文件通常放在controller下面,类名和文件名保持大小写一致,并采用驼峰命名(首字母大写)。

如果要改变controller目录名,需要在route.php配置文件中设置:

'controller_layer'    =>    'controllers',
复制

如果使用的是单应用模式,那么控制器的类的定义如下:

<?php
namespace app\controller;

class User 
{
    public function login()
    {
        return 'login';
    }
}
复制

控制器类文件的实际位置则变成

app\controller\User.php
复制

访问URL地址是(假设没有定义路由的情况下)

http://localhost/user/login
复制

如果你的控制器是HelloWorld,并且定义如下:

<?php
namespace app\controller;

class HelloWorld 
{
    public function hello()
    {
        return 'hello,world!';
    }
}
复制

控制器类文件的实际位置是

app\controller\HelloWorld.php
复制

访问URL地址是(假设没有定义路由的情况下)

http://localhost/index.php/HelloWorld/hello
复制

并且也可以支持下面的访问URL

http://localhost/hello_world/hello
复制

多应用模式

多应用模式下,控制器类定义仅仅是命名空间有所区别,例如:

<?php
namespace app\shop\controller;

class User
{
    public function login()
    {
        return 'login';
    }
}
复制

控制器类文件的实际位置是

app\shop\controller\User.php
复制

访问URL地址是(假设没有定义路由的情况下)

http://localhost/index.php/shop/user/login
复制

控制器后缀

如果你希望避免引入同名模型类的时候冲突,可以在route.php配置文件中设置

// 使用控制器后缀
'controller_suffix'     => true,
复制

这样,上面的控制器类就需要改成

<?php
namespace app\controller;

class UserController
{
    public function login()
    {
        return 'login';
    }
}
复制

相应的控制器类文件也要改为

app\controller\UserController.php
复制

渲染输出

默认情况下,控制器的输出全部采用return的方式,无需进行任何的手动输出,系统会自动完成渲染内容的输出。

下面都是有效的输出方式:

<?php
namespace app\index\controller;

class Index 
{
    public function hello()
    {
    	// 输出hello,world!
        return 'hello,world!';
    }
    
    public function json()
    {
    	// 输出JSON
        return json($data);
    }
    
    public function read()
    {
    	// 渲染默认模板输出
        return view();
    }

}
复制

控制器一般不需要任何输出,直接return即可。并且控制器在json请求会自动转换为json格式输出。

不要在控制器中使用包括dieexit在内的中断代码。如果你需要调试并中止执行,可以使用系统提供的halt助手函数。

halt('输出测试');
复制

多级控制器

支持任意层次级别的控制器,并且支持路由,例如:

<?php
namespace app\index\controller\user;

class  Blog 
{
    public function index()
    {
        return 'index';
    }
    
}
复制

该控制器类的文件位置为:

app/index/controller/user/Blog.php
复制

访问地址可以使用

http://serverName/index.php/user.blog/index
复制

由于URL访问不能访问默认的多级控制器(可能会把多级控制器名误识别为URL后缀),因此建议所有的多级控制器都通过路由定义后访问,如果要在路由定义中使用多级控制器,可以使用:

Route::get('user/blog','user.blog/index');
复制

上一篇:6url生成

下一篇:6基础控制器

相关内容

MySQL变量定义与初始化
MySQL变量分为系统变量和用户定义变量,用于存储数据和配置参数。...
2024-11-20 19:00:42
如何使用MySQL变量进行...
本文详细介绍了MySQL中用户定义变量、系统变量和局部变量的使用方...
2024-11-20 18:46:45
动态分配MySQL变量的示...
MySQL中,变量用于存储临时数据,包括全局和会话变量以及用户定义...
2024-11-20 18:23:38
MySQL排序性能优化策略
本文总结了MySQL排序性能优化的基本和高级策略,包括索引优化、减...
2024-11-19 23:23:37
html下载阿里云oss文...
html或者react下载阿里云oss文件视频图片
2024-08-04 10:27:02
tortoiseSvn文件...
检查启动项设置 : 如果Tortoise相关的条目图标没有显示,可...
2024-07-26 22:16:04

热门资讯

tp6开发规范 命名规范 请理解并尽量遵循以下命名规范,可以减少在开发过程中出现不必要的错误。 ThinkPHP6....
6高级查询 快捷查询 快捷查询方式是 一种多字段相同查询条件 的简化写法,可以进一步简化查询条件的写法,在多个字...
tp6多应用提示控制器不存在:... 第一个情况是没有使用composer安装扩展。 如果要使用多应用模式, 你需要win+r,cmd指针...
6配置 配置目录 单应用模式 对于单应用模式来说,配置文件和目录很简单,根目录下的 config 目录下面就...
6异常处理 和PHP默认的异常处理不同,ThinkPHP抛出的不是单纯的错误信息,而是一个人性化的错误页面。 异...
6swoole 本篇内容主要讲述了最新的 think-swoole 扩展的使用。目前仅支持Linux环境或者MacO...
6助手函数 助手函数 系统为一些常用的操作方法封装了助手函数,便于使用,包含如下: 助手函数 描述 abort ...
6查询表达式 查询表达式 查询表达式支持大部分的SQL查询语法,也是 ThinkPHP 查询语言的精髓,查询表达式...
6路由参数 路由参数 路由分组及规则定义支持指定路由参数,这些参数主要完成路由匹配检测以及后续行为。 路由参数可...
6查询 模型查询和数据库查询方法的区别主要在于,模型中的查询的数据在获取的时候会经过获取器的处理,以及更加对...