# SpringView for Yaf **Repository Path**: springphp123/SpringView4Yaf ## Basic Information - **Project Name**: SpringView for Yaf - **Description**: 为 PHP 鸟哥的 Yaf 开发框架专门适配增强的视图模板引擎,核心基于 SpringView v1.2,支持缓存、视图布局,为开发效率再提速。 - **Primary Language**: PHP - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-31 - **Last Updated**: 2021-06-21 ## Categories & Tags **Categories**: template-engine **Tags**: None ## README # SpringView for Yaf #### 介绍 在我们以往的大量 PHP 项目中都使用了 [鸟哥](https://www.laruence.com/) 贡献的 **[Yaf](http://pecl.php.net/package/yaf)** 开发框架,Yaf 框架运行效率高(C扩展),结构简单易上手,随PHP更新迭代快,实为“**国货之光**”。 在 Yaf 的使用过程中,对于视图模板的功能,框架本身自带的 Yaf_View_Simple 对于稍复杂项目开发来说功能过于基础和简陋。后来我们使用另一个开源的 C扩展模板引擎 [blitz](https://github.com/alexeyrybak/blitz) 继承实现了 Yaf 的视图,基本能满足开发需求。不过随着项目的复杂性增加,以及某些项目准备开源的想法,blitz模板自身迭代慢、有学习门槛、功能不易扩展逐渐成为了一种限制。有鉴于此,我们基于团队以往开发中积累的经验教训,结合最常用的使用需求,开发了 [SpringView](https://gitee.com/springphp123/SpringView) 视图模板引擎。 在 [SpringView](https://gitee.com/springphp123/SpringView) v1.2 的基础上,我们实现了对 Yaf 专门适配的版本: 1. 对 Yaf_View_Interface 抽象方法的具体实现 2. 基于 SpringView 简单易用的模板符号语法 3. 采用文件缓存的方式,提升脚本执行效率 4. 支持布局视图方式 **欢迎访问 [SpringView in Gitee](https://gitee.com/springphp123/SpringView) 或 [SpringView in SpringPHP](http://springview.springphp.cn) 了解 SpringView 视图模板引擎的功能及示例演示。** #### 类库方法说明 1. public 方法 + __construct($viewPath, $cachePath) 类库初始化 + assign($spec, $value) 设置视图模板中的变量值 + render($viewFile, $viewVars) 返回指定视图模板的输出内容 + display($viewFile, $viewVars) 直接显示指定视图模板的输出内容 + setJson($json) 设置是否将数据输出为json格式(不使用模板渲染) + setLayout($layoutFile, $blockFlagForView) 使用指定的布局视图模板 + setBlock($blockFlag, $viewFile) 设置布局视图模板中内容块的对应视图文件 + setScriptPath($viewDirectory) 设置视图模板文件所在目录 + getScriptPath() 返回视图模板文件所在目录 + setCachePath($cacheDirectory) 设置视图模板缓存文件所在目录 + getCachePath() 返回视图模板缓存文件所在目录 + setCacheLifetime($cacheSeconds) 设置缓存文件的有效时间(秒) + getCacheLifetime() 返回缓存文件的有效时间设定值 + cleanCache($viewFile) 删除指定视图模板的缓存文件 2. private 方法 - getCacheFile($viewPathFile) 返回指定视图路径文件的缓存文件(若缓存失效则重新生成) - buildCacheFile($viewPathFile, $cachePathFile) 将指定视图模板转换为PHP代码缓存文件并保存 - parseView($code) 分析处理指定模板代码,返回转换后的PHP代码 - parseFileTags($code) 分析处理模板代码中的文件引用标签,返回经过转换的代码 - parseLoopTags($code) 分析处理模板代码中的循环结构(含子循环)标签,返回经过转换的代码 - parseIfTags($code) 分析处理模板代码中的条件判断结构标签,返回经过转换的代码 - parseVariableTags($code) 分析处理模板代码中的变量(含表达式)输出标签,返回经过转换的代码 - parseHtmlTags($code) 分析处理模板代码中的特定html模板标签,返回经过转换的代码 - parseBlockTags($code) 分析处理模板代码中的内容区块标签,返回经过转换的代码 - isValidChar($x) 判断指定字符是否PHP变量名允许使用的字符 #### Yaf 使用说明 1. 请复制 **SpringView.php** 类文件到项目 **Yaf** 框架 **application.library** 或 yaf.library 对应的类库目录下,默认设置一般都在 "**application/library/**" 下。 2. 在 **Yaf** 框架的插件目录(一般为"**application/plugins/**")下,创建一个初始化视图模板引擎的插件文件(比如叫 View.php),参考代码如下: ``` setView(new SpringView($viewPath, $viewCachePath))); } } ``` 3. 配置完以上内容,就可以在 **Yaf** 框架控制器 **Controller** 下的方法( **Action** )中使用 SpringView 处理视图模板输出了,以下是代码举例: ``` getRequest(); $search = array( 'name' => $request->getPost('name', ''), 'status' => $request->getPost('status', STATUS_ALL), ); //组装查询参数 $params = $search + array( 'search' => $search, 'page' => 1, 'rows' => 20, ); //调用数据 model 查询数据 $C = M::load('Customer'); $result = $C->search($params); $params['total'] = $result['count']; $params['list'] = $result['data']; //最后将数据转给视图,输出内容 $this->getView()->assign($params); //如果想将结果输出为Json,则 $this->getView()->setJson(true); } } ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 感谢 1. 感谢每个来到这里的 **“拍黄片”男一号** 2. 感恩送出 Star 的你 3. 祝福 PHP 不死