视图作为 MVC 模式中的终端环节,在 web 编程中负责 dom 结构的展示。
phpGrace 使用 php 作为“天然模板“,您不必再去学习其他的模板语法,系统更不必浪费资源去完成复杂的模板解析工作!
视图文件目录
|_ appView |_ 站点或分组目录 |_ 控制器名称 |_ 视图文件.php
您定义的视图在控制内被自动或者使用 $this->__display() 调用,其实调用的核心非常简单且高效,核心就是“include”,这样就意味着您的视图文件和控制器都在一个对象内部!那么......
他们可以共享成员变量,即 $this->变量名称!
演示代码
# 控制器 .php , 如 index 控制器 -> index 方法
<?php namespace grace\controller; use grace\grace; class index extends grace{ public function index(){ $this->name = 'phpGrace'; $this->array = array('张三','李四','王五'); } }
# 视图.php ,如 appView/website/index/index.php
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>your site title</title> <meta name="keywords" content="" /> <meta name="description" content="" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /> <link rel="stylesheet" type="text/css" href="/static/main.css" /> <script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/3.1.0/jquery-3.1.0.min.js"></script> </head> <body> <div style="padding:100px;"> <h3><?php echo $this->name;?></h3> <ul> <?php foreach($this->array as $rows){?> <li><?php echo $rows;?></li> <?php }?> </ul> </div> </body> </html>
框架会自动按照一点规则调用视图,规则 :
自动调用视图 : 当前控制器/当前方法.php
如果需要关闭自动视图调用,如 : 在 api 接口开发时是不需要视图文件的。
// 在站点或分组入口文件 index.php 内定 PG_AUTO_DISPLAY 为 false; define('PG_AUTO_DISPLAY' , false); // 引入框架并运行 use grace\phpGrace; require '../vendor/autoload.php'; phpGrace::run(__DIR__);
您还可以在控制器内使用 $this->__display() 函数调用任意视图文件,可以多次执行,调用多次;
<?php namespace grace\controller; use grace\grace; class index extends grace{ public function index(){ $this->name = 'phpGrace'; $this->array = array('张三','李四','王五'); $this->__display('header.php'); } }
web 开发中我们通常会使用通用的的头部和底部,可以在视图文件中引入它们,如 :
<?php include PG_VIEW_DIR.'libs'.PG_DS.'header.php';?> // PG_VIEW_FIR 代表视图根目录 ( 绝对路径 ) // PG_DS 代表系统分割符
例子
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>your site title</title> <meta name="keywords" content="" /> <meta name="description" content="" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" /> <link rel="stylesheet" type="text/css" href="/static/main.css" /> <script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/3.1.0/jquery-3.1.0.min.js"></script> </head> <body> <?php include PG_VIEW_DIR.'libs'.PG_DS.'header.php';?> <div style="padding:100px;"> <h3><?php echo $this->name;?></h3> <ul> <?php foreach($this->array as $rows){?> <li><?php echo $rows;?></li> <?php }?> </ul> </div> </body> </html>