# 控制器对象
控制器对象是http组件中方便客户端与服务端交互的对象,它使用了对象池对象复用模式,以及注入`request`和`response`对象进行数据交互
## 对象池模式
http的控制器对象都采用了对象池模式进行获取创建对象.
例如:
* 用户A请求`/Index`经过url解析以及路由转发,定位到了`App\HttpController\Index.php`控制器
* 由于是第一次请求,`new App\HttpController\Index.php`并将该对象存入到对象池中
* 对象池出列,获取该对象,并进行调用index方法进行处理请求
* 处理完毕,将对象的public属性重置为默认值,对象回收对象池
* 用户B请求`/Index`经过url解析以及路由转发,定位到了`App\HttpController\Index.php`控制器
* 由于是二次请求,对象池直接获取到第一次的对象,不需要new,直接调用`index`方法进行处理
## 约定规范
* 项目中类名称与类文件(文件夹)命名,均为大驼峰,变量与类方法为小驼峰。
* 在HTTP响应中,于业务逻辑代码中echo $var 并不会将$var内容输出至相应内容中,请调用Response实例中的wirte()方法实现。
必须继承Controller基类 use EasySwoole\Http\AbstractInterface\Controller;
```
namespace App\HttpController\Api;
use EasySwoole\Http\AbstractInterface\Controller;
class Index extends Controller
{
public function index()
{
echo ‘index’;
}
}
```