view视图--display中echo出ob_get_contents的缓冲内容--(实现,拼接好文件--导入文件)
view.php
01默认设置有3个公共的属性,其他属性.后面实例化的时候.通过传递参数.foreach遍历,不断的增加属性
02view对象的实例化.位置在-->控制器父类的构造方法中
视图的目录名 $dir,
视图的文件名 $file,
后缀名:默认 $ext = '.php';
工厂类,实例化view时.传递路径.此时.有默认的文件后缀. $this->view = & factory::view($app->app)
就差display()传递文件名.拼接成文件的路径php文件.fetch缓存ob_get_contents内容,display类echo输出
工厂类,实例化view视图时. ,view构造方法中,增加一个dir目录值
function __construct($config = null)
{
if (is_array($config))
{
foreach ($config as $key => $value)
{
$this->{$key} = $value;
}
}
$this->clean_vars();
}
view构造方法中,通过foreach()遍历,不断的增加view视图的属性,比如配置文件,字符集设置,
set_view()方法中,增加文件属性(拼接文件).给后面导入视图用
set_view($view.){
$this->file = $this->dir.$view.$this->ext; //拼接视图文件名
return $this;
}
fetch(){
include $this->_file();//导入该文件
$output = ob_get_contents();//获取ob缓存中的文件内容
return $output;//返回给display
}
display直接echo 出fetch放回的内容
function display($view, $app = null)
{
echo $this->fetch($view, $app);
}
view对象的实例化.位置在-->控制器父类的构造方法中.调用工厂类中,实例化,存入静态
$this->view = & factory::view($app->app);//这里只需传递模块,(最后的实例化,需要具体.根目录开始-到模块-到视图
中)一个模块一个视图样式
$this->view->assign('CONFIG', config('config'));
$this->view->assign('SETTING', & $this->setting);
$this->view->assign($array);
发送给视图页面包括
01系统配置数据,
02设置数据
03用户id,名称,分组id,角色id,部门id
工厂类
class factory 无需继承
private static $objects;设置私有属性.静态,用来存对象
public static function &view($app = 'system')
{
if (!isset(self::$objects['view']))
{
import('core.view');
self::$objects['view'] = new view(array('dir'=>CMSTOP_PATH.'apps'.DS.$app.DS.'view'.DS));
//存入静态属性.需要指定类名,谁----->使用了这个静态属性------双冒号 本类使用self::
}
return self::$objects['view'];
}
检查不存在.才重新实例化.(导入view--实例化--只需传递模块)一个模块一个样式
否则,直接返回
框架类,需要定义自己的位置,以便加载类.拼接导入php文件用
framework.php
defined('FW_PATH') or define('FW_PATH', dirname(__FILE__).DS);
加载类loader.php放在框架目录里
定义,私有,静态属性 $paths 存储,导入的php文件的路径
工厂类调用功能,公共方法,
import('core.view'); //加载类文件loader.php.放在核心目录core同级,当前框架php文件目录后,可以拼接core目录和文
件.方法导入
公共方法,在加载类最后面.也就是外部.编写函数,直接调用,加载类,静态的导入方法
function import($path)
{
return loader::import($path);
}
static function import($filepath, $base = null, $key = null)
{
$keypath = $key ? $key.$filepath : $filepath;
if (!isset(self::$paths[$keypath]))
{
if (is_null($base)) $base = FW_PATH;//设置第二个参数.可以指定目录.导入.否则默认在framework目录下
$path = str_replace('.', DS, $filepath); //把导入时.写的点.换成斜杠.拼接框架模块,和后缀php即可导入
self::$paths[$keypath] = include $base.$path.'.php'; //存入.当前类,双冒号,的路径属性中
}
return self::$paths[$keypath];
}
如果.在私有,静态属性中.不存在这个php文件的路径.才需要拼接php文件路径.并导入php文件
如果该静态属性 存在.也就是已经导入了该php文件了.(返不返回都可以)默认返回php路径
显示页面-->display-->fetch获取页面内容-->ob_start (output buffer输出缓存)-->apmserv5.2.6服务器代表php5.2--
>output_buffering默认关闭
view视图--display中echo出ob_get_contents的缓冲内容--(实现,拼接好文件--导入文件)的更多相关文章
- view视图文件中的input等输入框必须含有name属性,不然控制器里的动作formCollection是没有值的
view视图文件中的input等输入框必须含有name属性,不然控制器里的动作formCollection是没有值的,就是没有name属性,后台获取不到值
- Django中的View视图讲解
Django中的View视图(view.py)是负责处理用户请求和返回响应的逻辑. 视图函数或视图简而言之就是一个python函数,它接受一个web请求并返回一个Web响应. 此响应可以是网页的HTM ...
- NET MVC 升级到5.1后,View视图中代码报错
使用nuget将项目中MVC4 升级到MVC5,之后项目还可以正常编译运行, 但View视图中相关的很多代码都报错,比如: 1.@model找不到 2.@Html找不到,本该是System.Web.M ...
- ThinkPHP框架视图详细介绍 View 视图--模板(九)
原文:ThinkPHP框架视图详细介绍 View 视图--模板(九) 视图也是ThinkPHP使用的核心部分: 一.模板的使用 a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和 ...
- 8、ASP.NET MVC入门到精通——View(视图)
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 View视图职责是向用户提供界面.负责根据提供的模型数据,生成准备提供给用户的格式界面. 支持多种视图引擎(Razor和ASPX视图引擎是官 ...
- 数据库VIEW(视图)
视图是基于 SQL 语句的结果集的可视化的表. 视图包括行和列,就像一个真实的表.视图中的字段就是来自一个或多个数据库中的真实的表中的字段. 我们能够向视图加入 SQL 函数.WHERE 以及 JOI ...
- android2.3 View视图框架源码分析之一:android是如何创建一个view的?
View是所有控件的一个基类,无论是布局(Layout),还是控件(Widget)都是继承自View类.只不过layout是一个特殊的view,它里面创建一个view的数组可以包含其他的view而已. ...
- Android View视图系统分析和Scroller和OverScroller分析
Android View视图系统分析和Scroller和OverScroller分析 View 视图分析 首先,我们知道.在Android中全部的视图资源(无论是Layout还是V ...
- Django的View(视图)和路由系统
一.Django的View(视图) 1.介绍 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一 ...
随机推荐
- STL容器小结
1.空间分配器 std::alloc用于容器中内存空间的分配和释放,以及分配内存的管理.construct().destroy()等全局函数用于为对象的构造和析构. 2.迭代器和trains 迭代器 ...
- liunx下试用yum进行php及opchache扩展安装
Centos 6.6 环境: php 5.6.29 nginx:1.10.2 1.配置安装包源 # CentOs 6.x rpm -Uvh http://mirror.webtatic.com/yum ...
- Webform动态创建删除行及后台取值
开发过程中经常碰到许多不确定事项,所以有时需要动态生成新的记录,如图所示,点击新增时新增一条参考记录,点击删除时则删除该记录:第一步,创建一个表格,用hidden记录当前最大行数,添加时则只需复制模板 ...
- proc中tran的一般处理
存储过程事物的处理 一般情况在proc中判断的处理我们都采用 ) begin select '错误' return end 而在tran中我们最好用抛异常的方式 begin try begin SET ...
- js格式转换
//1.保留整数 function showInteger(value,row,index){ if(value!=null && value!="" && ...
- HDU 5867 Water problem
处理出1-99的,之后的加上多少hundred和and即可.整百和一千的时候注意一下. #pragma comment(linker, "/STACK:1024000000,10240000 ...
- SpringMVC 学习-拦截器 HandlerInterceptor 类
一.拦截器 HandlerInterceptor 类的作用 SpringMVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理. 二.怎么使用呢? 1. ...
- iOS开发运行时总是显示4s的尺寸
今天新建了一个工程运行时,总是显示4s的尺寸,上面有一片黑,如下图所示: 解决方法:检查启动图片,没有包含6和6plus的启动图片,添加上启动图片时运行正常:
- UITableView控制头部View
首先我们先集成一个UIView做一个自己的View #import <UIKit/UIKit.h> @interface MyView : UIView @property (nonato ...
- JS的异步回调函数
hi :)几日不见,趁着周末和父母在广州走走逛逛,游山玩水,放松身心,第一天上班就被一个问题难住了,不废话,以下是关于JS函数回调方面的知识,今天的查阅看的也是一知半解,摘录下来日后慢慢琢磨! js中 ...