企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 控制器定义 控制器文件通常放在`application/module/controller`下面,类名和文件名保持大小写一致,并采用驼峰命名(首字母大写)。 一个典型的控制器类定义如下: ~~~ <?php namespace application\index\controller; use lib\Controller; class Index extends Controller { public function index() { return ['data' =>'' ,'code'=> 0, 'msg' => 'success']; } } ~~~ > 为了更方便使用,控制器类建议继承系统的控制器基类`lib\Controller`,虽然无需继承也可以使用。 控制器类文件的实际位置是 ~~~ Applications\index\controller\Index.php ~~~ 访问api地址是(假设没有定义路由的情况下) ~~~ ~~~ { "api": "index/index/idex", "app": "ipad", "ver": 88, "data": { "id": 1, "city": "江苏苏州", "country": "中国" } } ~~~ ~~~ 如果你的控制器是`HelloWorld`,并且定义如下: ## 控制器的命名空间 遵循PSR0规范,命名空间跟文件路径完全一致 ## 渲染输出 默认情况下,控制器的输出全部采用`return` 一个数组的方式,最后转换为json方式发送给客户端 ~~~ namespace application\index\controller; use lib\Controller; use lib\Request; use application\index\model\User as M; class User extends Controller { public function getInfo(Request $request) { $id = $request->param('id',0); $res = $model->getInfo($id); return ['data' =>$res ,'code'=> 0, 'msg' => 'success']; } ~~~ > 控制器一般不需要任何输出,直接return即可。 ## 控制器初始化 如果你的控制器类继承了系统控制器基类(`\lib\Controller`)的话,可以定义控制器初始化方法`initialize`,该方法会在调用控制器的方法之前首先执行,如非必要,不建议直接修改控制器的架构函数。 例如: ~~~ <?php namespace application\index\controller; use think\Controller; class Index extends Controller { protected function initialize() { echo 'init<br/>'; } public function hello() { return 'hello'; } public function data() { return 'data'; } } ~~~ > `initialize`方法不需要任何返回值