利用composer搭建PHP框架(三.模板引擎)

本节介绍在控制器方法中使用模板引擎。这里用到twig。twig文档地址:https://www.kancloud.cn/yunye/twig-cn/159454

使用composer安装twig,修改D:\WAMP\wamp\www\framework\composer.json,内容(这里安装的twig最新版本2.4.4,或者写*):

{
	"require":{
		"twig/twig": "2.4.4",
		"slim/slim": "3.9.0"
	}
}
在命令行输入 composer update安装。

在D:\WAMP\wamp\www\framework\frame\下创建模板引擎类View.php,目的是结合控制器调用时指定的模板文件的路径,内容:

<?php
namespace frame;

use twig\twig;

class View {

	protected $twig;
	protected $data = array();

	public function __construct($path) {
		$loader = new \Twig_Loader_Filesystem(ROOT_PATH . '/app/' . $path .'/view');
		$this->twig = new \Twig_Environment($loader, array(
			// 'cache' => FRAME_PATH . 'cache', // 注释表示不用缓存
			'debug' => false // 开启调试模式
		));
	}

	/*
	 * 设置模板数据
	 * 2中设置方法
	 * 1)key value方式:assign('key', 'value')
	 * 2)数组方式:assign(array('key' => 'value'))
	 */
	public function assign($var, $value = NULL) {
		if(is_array($var)) {
			$this->data = array_merge($this->data, $var);
		}else {
			$this->data[$var] = $value;
		}
	}

	public function display($template) {
		$template = $this->twig->loadTemplate($template . '.html');
		$template->display($this->data);
	}

}
修改D:\WAMP\wamp\www\framework\app\index\controller\index.php,调用模板引擎,内容:

<?php
namespace index\controller;

use frame\View;

class index {

	protected $view;

	public function __construct() {
		$this->view = new View(C('app_name'));
	}

	public function testView() {
		$this->view->assign('name', 'welson');
		$this->view->assign(array('data' => array('tom', 'cat', 'dog')));
		$this->view->display('index/test');
	}


}
在D:\WAMP\wamp\www\framework\app\index\view\下创建index文件夹,在index文件夹下创建模板文件test.html,内容如下:

<html>
<body>
	{{name}} <br>
	循环: <br>
	{% for item in data %}
        <li>{{item}}</li>
    {% endfor %}
</body>
</html>

修改D:\WAMP\wamp\www\framework\frame\FrameAutoLoad.php,使其加载定义了命名空间的View.php类,内容:

<?php

class FrameAutoLoad {

	/* 自动加载类 */
	public static function autoload($class) {
		if(false !== strpos($class, '\\')) {
			// 加载app下的文件
			$path = ROOT_PATH . '/app/' . str_replace('\\', '/', $class) . '.php';
			if(file_exists($path)) {
				require $path;
				return ;
			}
			// 加载框架类-命名空间的类
			$path = ROOT_PATH . '/' . str_replace('\\', '/', $class) . '.php';
			if(file_exists($path)) {
				require $path;
				return ;
			}
			return ;
		}
		// 加载frame框架下的文件
		$path = FRAME_PATH . $class . '.php';
		if(file_exists($path)) {
			require $path;
			return ;
		}
	}

}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值