# 控制器
在项目目录说明中我们看到了DefaultController.php
文件及的内容
<?php
namespace web\Controller;
use Cml\Controller;
class DefaultController extends Controller
{
use MiddlewareControllerTrait; //开启中间件支持
public function index()
{
return $this->response->raw('欢迎使用cml框架,应用初始化成功');
// echo '欢迎使用cml框架,应用初始化成功'; //不开启中间件
}
}
可以看到 控制器都有带Controller
后缀 且必须继承 Cml\Controller
这个基类
在这边命名空间以*web\Controller
*开始 因为这边DefaultController
直接是存放在web\Controller
目录下 所以命名空间为 web\Controller
,假如我们有一个商品模块商品模块下有商品跟订单两个控制器 这时目录结构则为
相应的Goods的文件内容为
<?php
namespace web\Controller\Goods;
use Cml\Controller;
class GoodsController extends Controller
{
public function index()
{
}
}
在这里我们的命名空间就要相应的申明为 web\Controller\Goods
# 前置方法
如果要在执行所有方法前都先做某操作。只要申明 init()
方法即可
如我们需要做权限控制,只要声明一个CommonController
其它控制器都继承它
<?php
namespace web\Controller;
use Cml\Controller;
class CommonController extends Controller
{
public function init()
{
//权限处理
}
}
# 开启中间件支持
中间件的支持遵循Psr-7、Psr-15、Psr-17相关规范,文件数量较多,对于已经在线上的稳定业务如果框架默认开启会降低性能。所以改成可选的方式引入。
use MiddlewareControllerTrait; //开启中间件支持
引用MiddlewareControllerTrait
之后我们可以如下方式操作Request
、Response
$this->request->getHeaderLine('accept');
return $this->response->raw('hello word');
# 发起curl请求
$this->curlClient('http://baidu.com', CurlClient::REQUEST_TYPE_GET)//创建一个curl请求实例
->sendRequest(); //发送请求
//未开启中间件支持则使用
\Cml\Http\Request::curl('http://baidu.com', [], [], 'GET');