【ThinkPHP框架教程·Part-05】控制器定义和渲染输出

简介: 本章节介绍控制器的定义方式及其URL访问和渲染输出。控制器文件存放在`controller`目录下,可通过配置`route.php`更改默认路径。类名采用驼峰命名法并与文件名一致,如`Test.php`位于`app\controller\Test.php`。支持设置控制器后缀(如`Controller`)以避免重名冲突。渲染输出方面,ThinkPHP支持通过`return`直接输出字符串或使用`json()`函数返回JSON格式数据。调试时推荐使用助手函数`halt()`,而非`die`或`exit`。

本章节我们来了解一下控制器定义的方式,包括 URL 访问和渲染输出。

一、控制器定义

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

1、控制器目录设置

如果想改变系统默认的控制器文件目录,可以在 config 下 route.php 配置:

2、控制器访问格式

类名和文件名大小写保持一致,并采用驼峰式(首字母大写);

namespace app\controller; 
class Test {
}

从上面两段代码得知 Test.php 的实际位置为:app\controller\Test.php

在 Test 类创建两个方法 index(默认)和 hello,访问 URL 如下:

http://localhost:8000/test

http://localhost:8000/test/hello

那么如果创建的是双字母组合,比如 class HelloWorld

访问 URL 如下:

http://localhost:8000/helloworld

http://localhost:8000/hello_world

3、设置控制器后缀(选择性开启)

如果你想避免引入同类名时的冲突,可以 route.php 设置控制器后缀: 'controller_suffix' => true,

此时,为了防止重名,所有控制器后面都必须加上Controller后缀。Test.php类名就必须改成 TestController.php。


二、渲染输出

ThinkPHP 直接采用方法内 return 返回的方式直接就可以向页面输出了。

1、return返回字符串

假设我们定义一个方法想要使用return返回一个数组:

<?php
namespace app\controller;
class Test
{
    public function arrayOutput()
    {
        $data = ['a' => 1, 'b' => 2, 'c' => 3];
        return $data;
    }
}

访问后,发现不支持直接输出数组类型。

2、返回json格式

这里可以使用采用json()函数,封装成json的格式输出:

$data = array('a' => 1, 'b' => 2, 'c' => 3); 
return json($data);

此时就可以以json的格式输出到页面。

3、扩展:助手函数 halt()

另外,变量调试时,不推荐使用 die、exit 等 PHP 方法中断代码执行,推荐助手函数 halt();

<?php
namespace app\controller;
class Test
{
    public function arrayOutput()
    {
        $data = ['a' => 1, 'b' => 2, 'c' => 3];
        halt('中断测试');
        return json($data);
    }
}


相关文章
|
存储 前端开发 JavaScript
纯前端实现腾讯cos文件上传功能
在前端开发中文件上传是经常会遇到的,并且多数情况会使用第三方平台来存储文件,腾讯云cos是我们常用的。本篇文章就是带我从前端的角度实现腾讯云COS存储。本文参考了腾讯云COS开发文档 JavaScript SDK
1495 0
|
监控 NoSQL 数据可视化
Redis 官方可视化工具,功能真心强大
一、RedisInsight 简介 RedisInsight 是一个直观高效的 Redis GUI 管理工具,它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控,并且可以在界面上使用 CLI 和连接的 Redis 进行交互(RedisInsight 内置对 Redis 模块支持): https://docs.redis.com/latest/ri/ RedisInsight 提供的功能: 唯一支持 Redis Cluster 的 GUI 工具; 可以基于 Browser 的界面来进行搜索键、查看和编辑数据; 支持基于 SSL/TLS 的连接,同时还可以在界面上进行内存分
|
11月前
|
数据可视化 Python
Seaborn 教程
Seaborn 教程
183 5
|
11月前
|
存储 SQL 前端开发
【若依RuoYi-Vue | 项目实战】帝可得后台管理系统(二)
接着上回的【若依RuoYi-Vue | 项目实战】基于若依的帝可得后台管理系统(一),本次我们继续完成人员管理、设备管理、策略管理模块的开发。
1810 6
【若依RuoYi-Vue | 项目实战】帝可得后台管理系统(二)
|
11月前
|
SQL 运维 NoSQL
【若依RuoYi-Vue | 项目实战】帝可得后台管理系统(一)
在学习完 若依环境搭建 和 若依二次开发案例 后,我们将基于若依脚手架完成一个关于智能货柜的项目实战——帝可得!帝可得是一个基于物联网概念下的智能售货机运营管理系统。本文将带领大家使用若依框架从0到1进行项目开发与测试。
3123 1
【若依RuoYi-Vue | 项目实战】帝可得后台管理系统(一)
|
11月前
|
SQL JSON 前端开发
若依RuoYi脚手架二次开发教程(二次开发必学技能)
本次我们将通过一个菜品管理模块开发的案例,来演示拿到若依框架后,如何在若依管理系统上进行二次开发,升级改造为自己的管理系统。适合以若依作为项目脚手架的公司开发人员、毕业设计的学生及开源项目学习者。
6499 1
若依RuoYi脚手架二次开发教程(二次开发必学技能)
|
11月前
|
监控 NoSQL Java
若依RuoYi项目环境搭建教程(RuoYi-Vue + RuoYi-Vue3版本)
若依(RuoYi)是一款基于Spring Boot和Vue.js的开源Java快速开发脚手架,支持OAuth2、JWT鉴权,集成多种安全框架和持久化框架。它提供了系统管理、监控管理、任务调度、代码生成等常用功能模块,适合中小型公司快速搭建Web应用。本文主要介绍若依框架的特点、版本发展、优缺点及项目部署步骤,帮助开发者快速上手并部署若依项目。
13224 3
若依RuoYi项目环境搭建教程(RuoYi-Vue + RuoYi-Vue3版本)
|
存储 Linux
Linux文件管理(超详细讲解)
Linux文件管理(超详细讲解)
646 5
|
安全 数据安全/隐私保护
如何进行安全的公钥交换
如何进行安全的公钥交换
253 0
|
Java Linux
POI 生成word 转 pdf
根据业务需要 需要出一份 PDF 文件 作为 公告的附件使用 PDF文件中 需要有 各种数据作为展示 是动态生成的
2955 0
POI  生成word 转 pdf