ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 控制器 ## 基础控制器 ### **下面是一个基础控制器类的例子** ``` <?php namespace app\home; class Hello { public function index(){ return 'hello world'; } } ``` 这个是一个在在目录`app/home/Hello.php` 下的一个文件存在一个`action=>index` 这个控制器的访问路径 `http://127.0.0.1/home/hello/index` 控制器目录3层级结构类似`/home/hello/index` ## **无限级目录控制器** 开启无限极目录结构 >[info]无限极目录路由需要关闭配置文件`route.open_level=>false` >[info]控制器支持无限极目录结构,最终一个文件指向`Action` 倒数第二个为`Controller` 前面部分为`Module` >注意`命名空间`使用`[PSR-4] ` ### **无限级目录配置** 控制目录结构层数在配置文件`conf/config => route.level` ``` // +---------------------------------------------------------------------- // | 项目结构层数配置 // | open_level // | ture:开启项目结构 // | false:关闭项目结构目录 // | 关闭后取SCRIPT_NAME 最后一个为Action 倒数第二个为Controller 参数/s区分 // +---------------------------------------------------------------------- // 'route' => [ 'level' => 3, // 项目结构层数数量 'open_level' => false, 'open_route' => true, // 是否开启路由转换功能 true开启 false关闭 'files' => [CONFIG_PATH . 'route.php'], // 路由规则存放地址 'type' => 'sqlite', // 保存类型 ], ``` ### **创建一个无限级带基础`Controller`类的控制器** ``` namespace app\home\hello\one\two\three; use denha\Controller; class Index extends Controller { public function showView(){ return $this->view('<style type="text/css">*{ padding: 0; margin: 0; }a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; }body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; }p{ line-height: 1.6em; font-size: 47px;text-align:center;margin-top:20%; }ul{width:700px;margin:0 auto;}ul li{float:left; padding:0 35px;list-style:none;}</style><p> Denha <br/></p>'); } public function ajaxJson(){ return $this->ajaxReturn(['status'=>true,'msg'=>'hello world']); } } ``` 控制器最终请求地址为 http://127.0.0.1/home/hello/one/two/three/index/show_view 文件结构: ~~~ project ├─app │ ├─home │ │ ├─hello │ │ │ ├─one │ │ │ │ ├─two │ │ │ │ │ ├─three │ │ │ │ │ │ └─Index.php ~~~ 这个控制器继承了`denha\Controller` >可以使用`show`方法`渲染视图` >可以使用`ajaxReturn`输出json信息,如果是jsonp则返回jsonp格式