国产InitPHP框架系列 - InitPHP框架搭建高可用WEB应用03:模板View使用

原创 2013年12月29日 14:25:24

InitPHP框架是一款轻量级PHP开源框架,框架文档和下载地址:http://initphp.com


模板基本使用

1. 模板配置

我们继续之前几篇文章的代码设计。这一节主要讲如何来使用InitPHP框架的模板。

先看一下配置,配置文件从initphp/initphp.conf.php中的模板配置拷贝到conf/comm.conf.php文件中。模板的配置看如下:

/*********************************View配置*****************************************/
/**
 * 模板配置
 * 1. 可以自定义模板的文件夹,编译模板路径,模板文件后缀名称,编译模板后缀名称
 * 是否编译,模板的驱动和模板的主题
 * 2. 一般情况下,默认配置是最优的配置方案,你可以不选择修改模板文件参数
 */
$InitPHP_conf['template']['template_path']      = 'web/template'; //模板路径
$InitPHP_conf['template']['template_c_path']    = 'data/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']              = ''; //模板主题

配置文件中已经有了详细的注释,这边要注意一下几个配置细节:

is_compile参数。一般情况下,模板都会写在template_path文件夹下,然后会生成新的编译文件到template_c_path文件夹下。在调试环境下打开这个参数,上线之后请关闭这个参数,这样每次请求都不会生成新的文件。

driver 参数。这个参数是模板驱动,默认有两种,第一种是default 第二种是simple,默认是simple


2. 使用模板

在web/目录下创建 template文件夹,主要用来存放模板,模板后缀名.htm

在app/目录下创建data/template_c文件夹,data文件夹主要用来存放生成的模板文件,这个文件需要有可写777权限。

在template下面创建一个hello.htm的模板文件

然后在indexController中调用模板

<?php
/**
 * 入口Controller
 * @author zhuli
 *
 */
class indexController extends Controller {
	
	public $initphp_list = array("get"); //Action白名单
	
	public function before() {
		echo "before<br/>";
	}
	
	public function after() {
		echo "after<br/>";
	}
	
	/**
	 * 入口
	 */
	public function run() {
		$this->view->display("hello"); //调用hello.htm模板,后缀名.htm不需要填写
	}
	
	/**
	 * get方法
	 */
	public function get() {
		echo "THIS IS GET<br/>";
	}
}

浏览器中访问http://127.0.0.1/test/www.initphp.com/ 后可以看到模板调用过,并且模板编译文件夹下多了一个新的文件hello.tpl.php


3. View API使用

View Api 一共只有5个API接口。接口文档:http://www.initphp.com/6_4.htm

模板API使用:

		//模板会按照顺序设置,但是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(); //模板显示

4. default的模板标签

default模板标签其实就是最原始的PHP使用方法,简单暴力好用。

/* 以下是default的模板标签使用方法(具体使用和PHP中一样):*/
/* 配置文件修改:*/
$InitPHP_conf['template']['driver']             = 'default';

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

5. simple模板标签

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

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

/* 标签使用方法: */

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

/* if语句使用:*/
<!--{if ($a == 'yes')}-->
<!--{elseif ($a == 'no')}-->
<!--{else}-->
<!--{/if}--> 

/* foreach语句使用:*/
<!--{foreach ($a as $k => $V)}-->
<!--{/foreach}-->

/* for语句使用:*/
<!--{for ($i=0; $i<100; $i++)}-->
<!--{/for}--> 

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

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

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


模板高级使用

1. 自定义标签

  1. 自定义的模板标签放置在: initphp/core/view/driver/文件夹下,该文件夹下已经有  default.init.php  和   simple.init.php,分别为default和simple两个模板标签驱动。
  2. 文件的名称为:标签驱动名称+'.init.php',例如:simple.init.php
  3. 类名称为:标签驱动名称+'Init',例如:simpleInit
  4. 需要定义一个init($str, $left, $right)的公有函数,$str是需要替换的HTML代码,$left是模板标签的左标记(默认:'<!--{'),$right是模板标签的右标记(默认:'}-->')
  5. 需要使用自定义模板标签的时候,别忘记修改配置文件中的:$InitPHP_conf['template']['driver']

    具体参看下面的simple模板标签驱动:

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);
	 }
}

2. layout布局

  1. 模板HTML页面中使用Layout:<!--{layout:version}-->。规则:左标签+'layout:'+'模板名称(不需要带.htm,有目录则user/version,和set_tpl()一样使用)'+右标签
  2. Layout是为了解决用户在HTML页面中来实现模板布局,html中使用了<!--{layout:version}-->,则会显示version.htm静态页面

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

3. 模板主题

  1. 一般情况下,一个网站会有多个模板主题,InitPHP提供了简单的模板主题配置方法
  2. 用户只需要配置$InitPHP_conf['template']['theme']这个变量,如果是red的主题,则值为'red'
  3. 模板主题都是放在模板默认的目录下面的,例如'red'主题,则模板文件夹目录为: template/red/文件夹下
  4. 实际上只是在模板默认的文件目录下再添加了一层目录,这样可以方便多主题的应用


4. 编译机制


  1. InitPHP的模板机制都会将HTML页面编译成.php文件,默认为(template_c/编译文件夹和.tpl.php后缀名称)
  2. $InitPHP_conf['template']['is_compile']是否开启编译机制,建议开发的时候开启,开发完成上线后,关闭该参数



版权声明:本文为博主原创文章,未经博主允许不得转载。

国产InitPHP框架系列 - InitPHP框架搭建高可用WEB应用05:数据层Dao使用

InitPHP框架是一款轻量级PHP开源框架,框架文档和下载地址:http://initphp.com Dao层说明 Dao层通俗的讲就是数据层。再简单的讲,Dao层主要是用于写sql语句的。可能...
  • initphp
  • initphp
  • 2014年11月29日 09:39
  • 4840

国产InitPHP框架系列 - InitPHP3.8 发布

InitPHP框架已经不知不觉写了三年了。发现今年自己也是蛮拼的,发了四次版本,框架也是越来越完善了。 做PHP框架的门槛其实不高,但是要去想透里面的每一个细节还是需要花很多心思的。 最近两年虽然一直...
  • initphp
  • initphp
  • 2014年11月25日 16:55
  • 5046

国产InitPHP框架系列 - InitPHP框架搭建高可用WEB应用02:深入控制器应用

InitPHP框架是一款轻量级PHP开源框架,框架文档和下载地址:http://initphp.com 控制器Controller基本使用 1. 配置参数 我们在上一节的时候,已经看到过配置信...
  • initphp
  • initphp
  • 2013年12月15日 17:23
  • 5471

国产InitPHP框架系列 - InitPHP框架搭建高可用WEB应用01:创建项目

InitPHP框架是一款轻量级PHP开源框架,框架文档和下载地址:http://initphp.com 创建Hello World项目 1. 下载框架 选择最新的版本,进行下载。框架下载地址:h...
  • initphp
  • initphp
  • 2013年12月15日 15:23
  • 9258

php bootstrap 实现简单登录

所有文件 记住是获取name键值对 from 里面 action就是你的动作signin.html ...

Bootstrap的使用。。。之登录界面。。。

直接上代码。。。

InitPHP框架Hook机制解读

wordpress受到大部分人的追捧是因为它有一个强大的挂件机制,这个机制可以让全世界各地不同的开发者参与进来,并且不影响原有核心程序代码。 今天来分析下,initphp框架中对hook的处理: ...

initphp框架

  • 2013年06月18日 10:29
  • 445KB
  • 下载

Web应用——驾培管理系统之框架搭建

前言:        本次项目写一个驾驶员培训管理系统的web后端,前端App端由其他人完成。本次项目暂时没有用到struts2+mybatis+spring3框架,只是用最基础的页面交互获取数...

Web应用——驾培管理系统之框架搭建(作者:小圣)

Web应用——驾培管理系统之框架搭建 前言:本次项目笔者写一个驾驶员培训管理系统的web后端,前端App端由其他人完成。本次项目暂时没有用到struts2+mybatis+spring3框架,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:国产InitPHP框架系列 - InitPHP框架搭建高可用WEB应用03:模板View使用
举报原因:
原因补充:

(最多只允许输入30个字)