9.1.视图解析器

视图解析器

所谓视图解析,就是根据ModelAndView携带的视图文件和视图数据,渲染视图文件,填充数据,然后输出

接口

interface ViewInterface{
    /**
     * 渲染视图
     * 
     * @param \qing\mv\ModelAndView $mv
     */
    public function render(\qing\mv\ModelAndView $mv);
}

回顾一下ModelAndView类

<?php
namespace qing\mv;
class ModelAndView{
    /**
     * 视图名称,视图文件
     *
     * @var string
     */
    public $viewName='';
    /**
     * 视图数据,模版数据
     *
     * @name params
     * @var array
     */
    public $vars=[];
}
?>

内置视图解析器

\qing\view\View//基础视图解析器
\qing\view\CachedView//支持缓存的视图解析器

基础视图解析器 \qing\view\View

视图变量的解析

//控制器返回MV
return $this->render('index',['id'=>123,'name'=>'xiaowang'])
//MV对象
object(qing\mv\ModelAndView)#75 (7) {
  ["viewName"]=>
  string(11) "index"
  ["viewPath"]=>
  string(0) ""
  ["vars"]=>['id'=>123,'name'=>'xiaowang']
}  

//模版
<b><?php echo $id;?></b> <em><?php echo $name;?></em>
//模版解析后
<b>123</b> <em>xiaowang</em>

组件设置

//视图组件
'view'=>
[
    'class'=>'\qing\view\View'
]

\qing\view\CachedView 支持缓存的视图解析器

编译组件

视图缓存路径

~runtime/~views/index/index.abc...123.html

组件设置

//composer qingmvc/qtemplate
//视图组件
'view'=>
[
    'class'=>'\qing\view\CachedView'
],
//视图编译组件
'view.compiler'=>
[
    'creator'=>'\qtemplate\CompilerCreator',
],