InitPHP (A PHP Framework) 用户手册
第4章 4.5 View视图层使用

详细说明:

API使用:

class indexController extends Controller {
	
	public $initphp_list = array('test'); 
	
	public function run() {
		$this->view->assign('username', '模板赋值方法');
		//模板会按照顺序设置,但是set_tpl函数中的第二个参数F和L分别让模板最先和最后显示
		$this->view->set_tpl('test'); //设置一个template/test.htm的模板页面
		$this->view->set_tpl('user/userinfo'); //设置template/user/userinfo.htm
		$this->view->set_tpl('header', 'F'); //设置为头部,最先显示
		$this->view->set_tpl('footer', 'L'); //最后显示
		$this->view->remove_tpl('test'); //可以移除上面已经设置的test.htm模板
		$this->view->get_tpl(); //可以得到已经设置的模板数组
		$this->view->display(); //模板显示
	}
	
	public function test() {
		echo 'index.php?c=index&a=test 才会执行';
		$code = $this->getLibrary('code');
		$code->getcode();
	}
	
	public function before() {
		echo '前置执行Action';
	}
	
	public function after() {
		echo '后置执行Action';
	}
	
	/**
	 * @return testService
	 */
	private function getTestService() {
		return InitPHP::getService('test','test');
	}

}

配置详解:

/**
 * 模板配置
 * 1. 可以自定义模板的文件夹,编译模板路径,模板文件后缀名称,编译模板后缀名称
 * 是否编译,模板的驱动和模板的主题
 * 2. 一般情况下,默认配置是最优的配置方案,你可以不选择修改模板文件参数
 */
$InitPHP_conf['template']['template_path']      = 'template'; //模板路径
$InitPHP_conf['template']['template_c_path']    = 'template_c'; //模板编译路径 
$InitPHP_conf['template']['template_type']      = 'htm'; //模板文件类型  
$InitPHP_conf['template']['template_c_type']    = 'tpl.php';//模板编译文件类型 
$InitPHP_conf['template']['template_tag_left']  = '<!--{';//模板左标签
$InitPHP_conf['template']['template_tag_right'] = '}-->';//模板右标签
$InitPHP_conf['template']['is_compile']         = true;//模板每次编译-系统上线后可以关闭此功能
$InitPHP_conf['template']['driver']             = 'simple'; //不同的模板驱动编译
$InitPHP_conf['template']['theme']              = ''; //模板主题

模板使用:

/* 以下是simple的模板标签使用方法:*/

/* 配置文件修改: */
$InitPHP_conf['template']['driver']             = 'simple';

/* 标签使用方法: */

/* 普通使用方法:*/
<!--{echo $uid;}-->

/* if语句使用:*/
<!--{if ($a == 'yes')}-->
<!--{elseif ($a == 'no')}-->
<!--{else}-->
<!--{if}--> //注意:if结束标签前需要加'/if',这里文档无法显示

/* foreach语句使用:*/
<!--{foreach ($a as $k => $V)}-->
<!--{foreach}--> //注意:foreach结束标签前需要加'/',这里文档无法显示

/* for语句使用:*/
<!--{for ($i=0; $i<100; $i++)}-->
<!--{for}--> //注意:for结束标签前需要加'/',这里文档无法显示

/* 输出变量:*/
<!--{$username}-->

/* 输出常量:*/
<!--{APP_PATH}-->

<!--{layout:user}--> 

/* 以下是default的模板标签使用方法(具体使用和PHP中一样):*/

/* 配置文件修改:*/
$InitPHP_conf['template']['driver']             = 'default';

/* 一个简单的模板*/
<!--{echo $uid;}-->
<!--{if (true == true) { }-->
<!--{}}-->
<!--{layout:user}--> 

设计自己的模板:

if (!defined('IS_INITPHP')) exit('Access Denied!');
/*********************************************************************************
 * InitPHP 2.1 国产PHP开发框架  View-simple 简单模板驱动规则模型
 *-------------------------------------------------------------------------------
 * 版权所有: CopyRight By initphp.com
 * 您可以自由使用该源码,但是在使用过程中,请保留作者信息。尊重他人劳动成果就是尊重自己
 *-------------------------------------------------------------------------------
 * $Author:zhuli
 * $Dtime:2011-10-09 
***********************************************************************************/
class simpleInit {

	/**
	 * 模板驱动-简单的驱动
	 * @param  string $str 模板文件数据
	 * @return string
	 */
	 public function init($str, $left, $right) {
	 	//if操作
	 	$str = preg_replace( "/".$left."if\s+(.+?)".$right."/", "", $str );
		$str = preg_replace( "/".$left."else".$right."/", "", $str );
		$str = preg_replace( "/".$left."elseif\s+(.+?)".$right."/", "", $str );
		//for操作
		$str = preg_replace("/".$left."for\s+(.+?)".$right."/","",$str);
		$str = preg_replace("/".$left."\/for".$right."/","",$str);
		//foreach操作
		$str = preg_replace("/".$left."foreach\s+(.+?)".$right."/","",$str);
		$str = preg_replace("/".$left."\/foreach".$right."/","",$str);
		//输出变量
		$str = preg_replace( "/".$left."(\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)".$right."/", "", $str );
		//常量输出
		$str = preg_replace( "/".$left."([A-Z_\x7f-\xff][A-Z0-9_\x7f-\xff]*)".$right."/s", "", $str );
		//标签解析
		$str = preg_replace ( "/".$left."\/if".$right."/", "", $str );
	 	$pattern = array('/'.$left.'/', '/'.$right.'/');
		$replacement = array('');
		return preg_replace($pattern, $replacement, $str);
	 }
}

layout布局:

/* 模板布局,在所有模板引擎中该方法都通用 */
/* 模板布局主要是为了解决模板切割成多个小模板,模板中能直接调用使用*/
/* 标签使用:layout:模板名称(不需要带模板名称后缀,例如user.htm模板,则直接user。如果模板有多个文件夹,则test/user 代表test/user.htm模板)*/
<!--{layout:user}--> 

模板主题:

编译机制: