本章节我们来了解一下控制器定义的方式,包括 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); } }