zpf 视图

简介: 2014年8月19日 18:12:16 smarty使用了2年, 使用PHP本身做模版引擎也有4个多月了, 最终还是在我的这个框架中抛弃了smarty,转用原生的PHP代码做模版引擎,并简单写了一个视图类,还没有实现缓存功能 视图类文件在core/view.

2014年8月19日 18:12:16

smarty使用了2年,

使用PHP本身做模版引擎也有4个多月了,

最终还是在我的这个框架中抛弃了smarty,转用原生的PHP代码做模版引擎,并简单写了一个视图类,还没有实现缓存功能

视图类文件在core/view.php

控制器中的使用方法(代码在current_module/controller/xxx.php):

 1 class _index extends Main
 2 {
 3     public function initc()
 4     {    }
 8 
 9     public function index()
10     {
11         $this->view->a = 111;
12         $this->view->b = 222;
13         $this->view->c = 333;
14         $this->show('test');
15     }
16 }

模版中使用变量(模版放在current_module/views/current_controller/test.php):

<?= $a, $b, $c ?>

模版中完全使用PHP的语法规则,不像smarty中又定义了一套语法规则

下边是简单的view类

 1 <?php
 2 /**
 3  * 视图类
 4  * 
 5  */
 6 class View 
 7 {
 8     public $prefix = '';
 9     public $module = '';
10     public $controller = '';
11     public $action = '';
12     public $arrSysVar = array();
13     
14     public function __construct($module, $controller, $action, $arrSysVar)
15     {
16         $this->module         = $module;
17         $this->controller     = $controller;
18         $this->action         = $action;
19         $this->arrSysVar     = $arrSysVar;
20         $this->prefix         = MODULEPATH.$this->module.'/'.VIEW_FLODER_NAME.'/'.$this->controller.'/';
21     }
22     
23     //备用初始化
24     public function init($module, $controller, $action, $arrSysVar)
25     {
26         $this->module         = $module;
27         $this->controller     = $controller;
28         $this->action         = $action;
29         $this->arrSysVar     = $arrSysVar;
30         $this->prefix         = MODULEPATH.$this->module.'/'.VIEW_FLODER_NAME.'/'.$this->controller.'/';
31     }
32 
33     //显示到浏览器
34     //可以重写该方法, 多次调用fetch()来渲染多个页面, 如后台开发的时候,
35     //顶部/左侧菜单栏/底部 可以统一渲染, 每次只用传入body页面的文件名
36     public function show($filename)
37     {
38         $content = $this->fetch($filename);
39         // header('Content-Type: ---'.'; charset=utf-8');
40         // header('Cache-control: ---');
41         // header('X-Powered-By:zhangzhibin');
42         echo $content;
43     }
44     
45     //输出内容到变量
46     public function fetch($filename)
47     {
48         $filename = !empty($filename) ? $filename : $this->action;
49         $filepath = $this->prefix.$filename.PHP_FILE_EXTENSION;
50         
51         $arrObjViewData = get_object_vars($this);
52         extract($arrObjViewData); //将普通变量置为全局可访问
53         extract($this->arrSysVar); //将系统变量置为全局可访问
54 
55         ob_start();
56         ob_implicit_flush(0);
57 
58         //渲染传入的模版
59         require_once($filepath);
60 
61         return ob_end_flush(); //输出到变量, 并清除缓存 
62     }
63 }

 

目录
相关文章
|
6月前
|
安全 数据安全/隐私保护 Windows
如何在Windows 10系统中查看已连接WiFi密码-亲测可用-优雅草卓伊凡
如何在Windows 10系统中查看已连接WiFi密码-亲测可用-优雅草卓伊凡
263 15
如何在Windows 10系统中查看已连接WiFi密码-亲测可用-优雅草卓伊凡
|
7月前
|
存储 资源调度 调度
从数据中心机房来看云服务器的可用性与性能!
数据中心机房是云服务器的物理基础,其硬件设施、运行环境和管理水平直接影响云服务的可用性和性能。稳定的电力供应(如UPS和柴油发电机)、冗余设计(网络和电源冗余)、精确的温湿度控制、优良的网络架构与带宽分配、高效的存储系统及合理的计算资源调度,共同保障云服务器的持续稳定运行,减少故障和性能下降的风险,确保业务稳定和服务质量。
151 1
|
10月前
|
人工智能 JSON 数据管理
ShowUI:新加坡国立联合微软推出用于 GUI 自动化的视觉-语言-操作模型
ShowUI是由新加坡国立大学Show Lab和微软联合推出的视觉-语言-行动模型,旨在提升图形用户界面(GUI)助手的效率。该模型通过UI引导的视觉令牌选择和交错视觉-语言-行动流,有效减少计算成本并提高训练效率。ShowUI在小规模高质量数据集上表现出色,展现出在GUI自动化领域的潜力。
309 4
ShowUI:新加坡国立联合微软推出用于 GUI 自动化的视觉-语言-操作模型
|
12月前
|
算法 架构师 Java
深入理解HotSpot源码:CMS、C1与ZGC的区别
【10月更文挑战第8天】作为一名资深架构师,深入理解HotSpot虚拟机中的垃圾收集器CMS、编译器C1以及新一代垃圾收集器ZGC,对于构建高效、可靠的Java应用至关重要。本文将通过背景介绍、业务场景分析、功能点阐述及Java源码示例,带您深入探讨这三者的区别。
189 2
|
8月前
|
人工智能 分布式计算 监控
AgentSociety:告别纸上谈兵!AI社会模拟器预判政策漏洞:输入新规秒看30年后社会形态
AgentSociety 是清华大学推出的基于大语言模型的社会模拟器,通过构建类人心智的智能体模拟复杂社会行为,适用于政策沙盒测试、危机预警等场景。
330 6
|
关系型数据库 MySQL Docker
Mac Docker 安装MySQL
Mac Docker 安装MySQL
313 1
|
10月前
|
人工智能 自然语言处理 机器人
OpenAI推出具有图像上传和分析功能的完整o1模型,并首次推出ChatGPT Pro
OpenAI推出具有图像上传和分析功能的完整o1模型,并首次推出ChatGPT Pro
|
人工智能 JSON 自然语言处理
🔍深度揭秘!如何用提示词驾驭生成式大模型,让你的创意无限飞🌈
【8月更文挑战第1天】在AI风潮中,生成式大模型因出色的内容创造能力备受创意工作者青睐。但如何巧妙运用提示词,激发模型潜力,仍是挑战。本文通过问答形式揭秘提示词技巧:理解其定义、掌握设计方法(明确目标、具象描述、考虑模型特性)、评估其影响力及调整策略(细化描述、变换风格、调节参数),并分享实用贴士,助您成为驾驭AI创作的高手。
774 7
|
10月前
|
Kubernetes Java 调度
记一次应用优雅下线排查经历
本文记录了一次线上应用发版时出现500错误的排查过程。问题出现在滚动更新过程中,部分请求调度到了正在下线的Pod,导致500错误。通过增加PreStop Hook、调整TerminationGracePeriodSeconds以及配置Java应用的优雅下线,最终解决了问题。此外,还发现SLB的长连接问题,并通过配置SLB优雅下线彻底解决了请求失败的情况。
|
开发框架 前端开发 JavaScript
利用FastReport传递图片参数,在报表上展示签名信息
利用FastReport传递图片参数,在报表上展示签名信息