Viewer 视图层
Viewer是属于MVC流程中的视图渲染处理。
- 在基于敏捷开发理念的MVC模式下,Web/H5的应用开发,才会有视图层管理。
- 在IOS/Android/小程序的MVVM模式下,视图层由前端应用负责渲染,Tinyphp作为后端,仅需要提供数据接口。
- 管理后台应用多数是web应用。
Viewer的视图引擎和前端库
Web应用的视图引擎包括Smarty
, PHP原生
,Template自定义视图渲染引擎
,可自行扩展。
TinyPHP集成了tinyphp-ui,通过它组织和管理html/css/js
View的实例化
Viewer 在控制器内,可通过DI方式自动实例化,并按需注入到控制器。
也可以通过控制器,直接调用视图层。
class MainController extends Controller
{
/**
* @autowired 通过自动注解标识可实例化模型
*/
private View $view;
/**
* 派发时,根据模型类型自动注入模型实例。
*/
public function indexAction(View $view)
{
$this->assign(); //视图变量
$this->display(...); //渲染显示
$this->fetch(); //获取渲染的视图内容
$view->assign(); //视图变量
$view->display(...); //渲染显示
$view->fetch(); //获取渲染的视图内容
}
...
}
View在profile.php 内的配置项
/**
* 视图设置
*
* 默认模板解析的扩展名列表
* .php PHP原生引擎
* .tpl Smarty模板引擎
* .htm|.html Template模板引擎
*
* view.src
* 视图模板存放的根目录
* example: application/views/
*
* template_dirname
* 视图模板目录下的默认存放子级目录
* example: views/default/
*
* lang.enabled
* 是否加载对应的语言包子级目录
* example: views/zh_cn/ 查找不到后,去默认模板目录里views/default/寻找
*
* view.compile
* 视图模板编译后的存放目录
*
* view.config
* 视图模板的配置存放目录
*
* view.assign
* 视图模板的预先加载配置数组
*
* view.engines 视图引擎配置
* engine => 视图模板解析类名
* ext => [] 可解析的模板文件扩展名数组
* config => [] 引擎初始化时的配置
*
* Example: Template引擎的插件配置
* engine => \Tiny\MVC\View\Engine\Template:
* config => [plugins => [
* 'plugin' => '\Tiny\MVC\View\Engine\Template\Url' , 'config' => []
* ]]
*
* view.helper 视图助手配置
* helper => classname 助手类名
* config => [] 助手初始化时的配置
*
* view.cache.enabled 是否开启视图缓存
* 默认不开启
*
* view.cache.dir 缓存目录
* view.cache.ttl 缓存过期时间
*/
$profile['view']['basedir'] = 'views/';
$profile['view']['theme'] = 'default';
$profile['view']['lang'] = true; //自动加载语言包
$profile['view']['paths'] = [];
$profile['view']['compile'] = '{runtime}/view/compile/';
$profile['view']['config'] = '{runtime}/view/config/';
$profile['view']['assign'] = [];
// 引擎和助手配置
$profile['view']['engines'] = [];
$profile['view']['helpers'] = [];
/*
* 视图的全局静态资源配置
*
* view.static.basedir 视图静态资源的存储根目录
* {static} => $profile['src']['static']
*
* view.static.public_path 视图静态资源的公开访问地址
* /static/ 当前域名下的绝对路径
* http://demo.com/static 可指定域名
*
* view.static.engine 是否开启视图解析的模板引擎
* 当前支持css js 图像文件的自动解析和生成
*
* view.static.minsize 静态模板引擎复制文件的最小大小
* 小于最小大小的,直接注入文件内容
* 大于最小大小的,在staic目录下生成对应外部文件在html下加载
*
* view.static.exts
* view.static.engine支持解析的静态资源扩展名
*
*/
$profile['view']['static']['basedir'] = '{static}';
$profile['view']['static']['public_path'] = '/static/';
$profile['view']['static']['engine'] = true;
$profile['view']['static']['minsize'] = 2048;
$profile['view']['static']['exts'] = ['css', 'js','png', 'jpg', 'gif'];