控制器
继承父类Controller
控制器跟我们平常所使用的框架并无差别,在app/Controllers下定义我们的控制器,控制需继承该目录下的Controller,该类源代码如下:
<?php
namespace App\Controllers;
use App\App;
use Kickpeach\Framework\Routing\Controller as BasicController;
abstract class Controller extends BasicController
{
//所有控制器都可以通过mdc访问服务
private $db;
private $redis;
private $mdc;
public function __construct(App $app)
{
parent::__construct($app);
$this->db = $app->getMdc()->Kick->loadDB();
$this->redis = $app->getMdc()->Kick->loadRedis();
$this->mdc = $app->getMdc();
}
//模板渲染
protected function render($tpl,$data=[]){
$loader = new \Twig_Loader_Filesystem(__DIR__.'/../../public/views');
$twig = new \Twig_Environment($loader,[
'cache'=>$this->app->config('view.cache'),
'debug'=>$this->app->config('debug')
]);
return $twig->load($tpl)->render($data);
}
//获取db实例
protected function db()
{
return $this->db;
}
//获取redis实例
protected function redis()
{
return $this->redis;
}
//获取mdc实例
protected function getMdc()
{
return $this->mdc;
}
}
从该类我们可以看到,我们可以使用以下几个方法辅助我们进行开发
- render 模板渲染函数,在控制器中我们可以使用
$name = 'KickPeach';
return $this->render('/Home/index.html',compact('name'));
进行模板渲染赋值操作
- db
获得db连接实例,可以进行相关的数据库操作,查询构造器的具体用法可以参考database组件,使用原生sql进行开发
- redis
获得redis连接实例,可以进行缓存相关的操作,参考predis库对redis操作,
- getMdc 获得mdcalls的实例,通过该实例,可以调用各个模块的服务,mdcalls具体使用可参考MdCalls组件
实例
可参考app/Controller/Home/Index.php