控制器


继承父类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