【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);
    }
}


相关文章
Three入门 【加载外部模型,使用dat.gui创建动画控制器】
Three入门 【加载外部模型,使用dat.gui创建动画控制器】
113 0
|
17小时前
|
PHP
【ThinkPHP框架教程·Part-06】基础、空、多级控制器
本文介绍了ThinkPHP框架中三种控制器的使用方法:基础控制器、空控制器和多级控制器。基础控制器提供了验证功能并注入了`think\App`和`think\Request`对象,推荐继承以获得更多方法。空控制器用于单应用模式下的错误提醒,定义一个Error类即可实现。多级控制器则通过在controller目录下创建子目录来实现分组管理,例如建立group目录并在其中创建Blog.php控制器,访问路径为`http://localhost:8000/group.blog`及其方法。
|
4月前
|
缓存 前端开发 JavaScript
Webpack 模块解析:打包原理、构造形式、扣代码补参数和全局导出
Webpack 模块解析:打包原理、构造形式、扣代码补参数和全局导出
219 1
|
6月前
|
JavaScript 前端开发
大事件项目55----基地址优化封装和便于以后服用
大事件项目55----基地址优化封装和便于以后服用
|
JSON JavaScript 前端开发
突破常规的前端技巧与方法(二)
突破常规的前端技巧与方法(二)
59 0
|
前端开发 安全 JavaScript
突破常规的前端技巧与方法(一)
突破常规的前端技巧与方法(一)
96 0
|
JavaScript 前端开发 测试技术
突破常规的前端技巧与方法(四)
突破常规的前端技巧与方法(四)
69 0
|
前端开发 JavaScript 搜索推荐
突破常规的前端技巧与方法(三)
突破常规的前端技巧与方法(三)
182 0
突破常规的前端技巧与方法(三)
|
前端开发
前端hook项目pc总结笔记-postgrest方法拼接扩展
前端hook项目pc总结笔记-postgrest方法拼接扩展
103 0
前端hook项目pc总结笔记-postgrest方法拼接扩展
|
前端开发
前端hook项目pc总结笔记-打印实现局部打印
前端hook项目pc总结笔记-打印实现局部打印
98 0