视图详解
视图概述
视图作为 MVC 模式中的终端环节,在 web 编程中负责 dom 结构的展示。
phpGrace 使用 php 作为“天然模板“,您不必再去学习其他的模板语法,系统更不必浪费资源去完成复杂的模板解析工作!
1 视图创建与调用
1.1 视图文件路径模式
您可以在入口文件中通过定义 PG_VIEW_TYPE 常量来改变视图的路径模式( 默认 dir );
模式说明 :
dir : 文件夹形式 [ 默认模式 ], 视图文件路径规则 : 控制文件夹/方法名称.php
file : 文件形式,视图文件路径规则 : 控制器名称_方法名称.php
1.2 视图文件位置及命名规则
/分组目录 : 如 /app /views // 框架自动调用视图 /控制器文件夹/方法名.php [ dir 模式 ] 或者 控制器文件夹_方法名.php [ file 模式 ] // 手动调用 使用 $this->display() 函数调用 /自定义目录/自定义视图名称.php 或者 /自定义视图名称.php
2. 控制器与视图间的数据共享
您定义的视图在控制内被自动或者使用 $this->display() 调用,其实调用的核心非常简单且高效,核心就是“include”,这样就意味着您的视图文件和控制器都在一个对象内部!那么......
他们可以共享成员变量,即 $this->变量名称!
演示代码
# 控制器 .php , 如 index 控制器 -> index 方法
<?php class indexController extends grace{ public function index(){ $this->name = 'phpGrace'; $this->array = array('张三','李四','王五'); } }
# 视图.php ,如 views/index/index.php
<?php if(!defined('PG_VERSION')){exit();}?> <h3><?php echo $this->name;?></h3> <ol> <?php foreach($this->array as $rows){?> <li><?php echo $rows;?></li> <?php }?> </ol>
3. 使用 display() 函数手动调用视图
框架会自动按照视图规则调用视图,如果需要关闭自动展示 :
// 在分组入口文件 index.php 内定 PG_AUTO_DISPLAY 为 false; define('PG_AUTO_DISPLAY' , false); // 引入框架并运行 include '../phpGrace/phpGrace.php';
您还可以在控制器内使用 $this->display() 函数调用任意视图文件,可以多次执行,调用多次;
<?php class indexController extends grace{ public function index(){ $this->name = 'phpGrace'; $this->array = array('张三','李四','王五'); // 路径关系 : 起始于 /views/ 目录 $this->display('header.php'); } }
4. 视图引用
web 开发中我们通常会使用通用的的头部和底部,可以在视图文件中引入它们,如 :
<?php include $this->templateDir.'header.php';?>
5. 避免视图文件被直接运行
视图文件应该被控制器调用,而不应该单独运行,我们可以在视图文件首行检查 phpgrace 版本常量,以保证视图一定是被框架调用,而非独立运行 :
<?php if(!defined('PG_VERSION')){exit();}?> <html>...</html>