一 smarty 是什么

  Smarty是一个PHP的模板引擎。更明确来说,它可以帮助开发者更好地 分离程序逻辑和页面显示。最好的例子,是当程序员和模板设计师是不同的两个角色的情况,而且 大部分时候都不是同一个人的情况。smarty 从开发层面上保证了程序员的"单一职责性Single"和"接口隔离 Interface Separate",PHP程序员更集中于逻辑处理,前端程序员更集中于页面展示.程序员修改业务逻辑不会影响前台显示,页面工程师修改页面不会影响逻辑.

二 smarty原理

  tpl文件编译成php文件,smarty变量用php变量替换掉,然后输出到浏览器.贴上部分代码.

 class Smarty extends Smarty_Internal_TemplateBase
{
const SMARTY_VERSION = '3.1.27';
...
const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler';
public static $global_tpl_vars = array();
Smarty::muteExpectedErrors()
public static $_previous_error_handler = null;
public static $_muted_directories = array('./templates_c/' => null, './cache/' => null); public static $_MBSTRING = SMARTY_MBSTRING;
public static $_CHARSET = SMARTY_RESOURCE_CHAR_SET;
public static $_DATE_FORMAT = SMARTY_RESOURCE_DATE_FORMAT;
public static $_UTF8_MODIFIER = 'u';
public static $_IS_WINDOWS = false;
private $template_dir = array('./templates/');
public $joined_template_dir = './templates/';
public $joined_config_dir = './configs/';
private $compile_dir = './templates_c/';
private $plugins_dir = null;
private $cache_dir = './cache/';
private $config_dir = array('./configs/');
public $force_compile = false;
public $merge_compiled_includes = false;
public $inheritance_merge_compiled_includes = true;
public $force_cache = false;
public $left_delimiter = "{";
public $right_delimiter = "}";
...
/**
* Initialize new Smarty object
*/
public function __construct()
{
if (is_callable('mb_internal_encoding')) {
mb_internal_encoding(Smarty::$_CHARSET);
}
$this->start_time = microtime(true);
// check default dirs for overloading
if ($this->template_dir[0] !== './templates/' || isset($this->template_dir[1])) {
$this->setTemplateDir($this->template_dir);
}
if ($this->config_dir[0] !== './configs/' || isset($this->config_dir[1])) {
$this->setConfigDir($this->config_dir);
}
if ($this->compile_dir !== './templates_c/') {
unset(self::$_muted_directories['./templates_c/']);
$this->setCompileDir($this->compile_dir);
}
if ($this->cache_dir !== './cache/') {
unset(self::$_muted_directories['./cache/']);
$this->setCacheDir($this->cache_dir);
}
if (isset($this->plugins_dir)) {
$this->setPluginsDir($this->plugins_dir);
} else {
$this->setPluginsDir(SMARTY_PLUGINS_DIR);
}
if (isset($_SERVER['SCRIPT_NAME'])) {
Smarty::$global_tpl_vars['SCRIPT_NAME'] = new Smarty_Variable($_SERVER['SCRIPT_NAME']);
} // Check if we're running on windows
Smarty::$_IS_WINDOWS = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'; // let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8
if (Smarty::$_CHARSET !== 'UTF-8') {
Smarty::$_UTF8_MODIFIER = '';
}
} /**
* fetches a rendered Smarty template
*
*/
public function fetch($template = null, $cache_id = null, $compile_id = null, $parent = null, $display = false, $merge_tpl_vars = true, $no_output_filter = false)
{
if ($cache_id !== null && is_object($cache_id)) {
$parent = $cache_id;
$cache_id = null;
}
if ($parent === null) {
$parent = $this;
}
// get template object
$_template = is_object($template) ? $template : $this->createTemplate($template, $cache_id, $compile_id, $parent, false);
// set caching in template object
$_template->caching = $this->caching;
// fetch template content
return $_template->render(true, false, $display);
} /**
* displays a Smarty template
*
*/
public function display($template = null, $cache_id = null, $compile_id = null, $parent = null)
{
// display template
$this->fetch($template, $cache_id, $compile_id, $parent, true);
} /**
* Check if a template resource exists
*/
public function templateExists($resource_name)
{
$save = $this->template_objects;
$tpl = new $this->template_class($resource_name, $this);
$result = $tpl->source->exists;
$this->template_objects = $save; return $result;
} public function __get($name)
{
$allowed = array('template_dir' => 'getTemplateDir', 'config_dir' => 'getConfigDir',
'plugins_dir' => 'getPluginsDir', 'compile_dir' => 'getCompileDir',
'cache_dir' => 'getCacheDir',); if (isset($allowed[$name])) {
return $this->{$allowed[$name]}();
} else {
trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
}
} /**
* <<magic>> Generic setter.
*/
public function __set($name, $value)
{
$allowed = array('template_dir' => 'setTemplateDir', 'config_dir' => 'setConfigDir',
'plugins_dir' => 'setPluginsDir', 'compile_dir' => 'setCompileDir',
'cache_dir' => 'setCacheDir',); if (isset($allowed[$name])) {
$this->{$allowed[$name]}($value);
} else {
trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
}
}

实现思想不算难,但是第一:已经有成熟的工具smarty了,所以不必重复开发,而且smarty实现的功能足够强大;第二:smarty 的受众足够广,学习成本低.

所以,不再开发,整合smarty到框架里面吧.

三 整合

  1.下载smarty :

 https://github.com/phpseasa/smarty

  2.整合进框架,源码上面已经分析过,大部分的配置在构造方法里.

  所以直接引入.奉上代码.

 /**
* @ file smarty 入口文件
* @ author yuxing@sina.book.com
*/ //define('SMARTY_PATH',dirname(__FILE__).'/');
//echo SMARTY_PATH.'Smarty.class'.EXT;exit;
//require_once(SMARTY_PATH.'Smarty.class'.EXT); class Mysmarty extends Smarty{
public function __construct()
{
parent::__construct();
$this->template_dir = APP_PATH."views";
$this->compile_dir = APP_PATH."templates_c";
$this->cache_dir = APP_PATH."cache";
$this->caching = 0;
$this->debugging = true;
$this->compile_check = true;
$this->left_delimiter = "{";
$this->right_delimiter = "}";
}
}

如此配置完毕,


 1 require_once(SYS_PATH.'smarty'.DIRECTORY_SEPARATOR.'smarty'.EXT);
2 class Controller {
3 private static $instance;
4 /**
5 * Constructor
6 */
7 public function __construct()
8 {
9 self::$instance =& $this;
10 $this->smarty = new Mysmarty()

在控制器中调用,

     public function __construct(){
parent::__construct();
}
public function test(){
$smarty=$this->smarty;
// var_dump($this->smarty);
$smarty->assign('test','111');
$smarty->display('test.tpl');
}

写模板文件

 this is a test framework ,there are so many things not going well!!!

 {$test}

页面触发

aaarticlea/png;base64,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" alt="" />

同时弹出了smarty的debug页面.

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAApkAAAErCAIAAAAaJw/mAAAgAElEQVR4nO19e3Bc1Z3m+Usuq4LKRVLrcpGC8BiGMV0dnBliZoJnMTtgbEPIshCJarIkmEUEs1kYTK2HMa4WNTQPLzKYCDDG4DFyE7AaP7CQx7ZA4JKs2DFqy5jpiACaIKyoUfU0BqcKFVbvH+c+zvO++qF75e+rr1zqe8/7nHu+8/udc6/J4WW3Cnx06U++MrG750BRj88//zybzXZ3d+/atWvbtm3d3d2HDh1yCF8sFvv7+50DAAAAAEB4sLvnwFc1xHvvvRcgFgms5R999NHu3buPHj164MCBw4cPHzhw4NNPP+3o6Ni1a9dHH32kiwUtBwAAACKEMrW8v79/fHz8wIEDu3btevPNNz/88EPn8DXV8o8++qinp+err74qFApHjx5Np9PpdLqrqyudTu/YsaOjo0Mn55HV8v6WGGlKew2dbiKxlsrV1F/m0c71dIX3IROxftFUrMKPSOWgad6ItTpQSZSj5f/5n/+5ZcuWw4cPv//++/39/Y899tiyZctSqdSXX36pi1JJLf/SRNfbfXLFPv/88927d3/99delUqlUKo2NjVEVp+jo6Mjlclu3blU2SgS1nE46UdTydBOJxWKEjdrfIv/WpVz72atKzZZuIjbMGikvCgXpb4nZYcySKS+KWVqBPNcnhFpu17ScXqmAlqebuAozPSAObbmwvisBLQdEdL3d96V/5PP5w4cPb926ta2traurK5fLDQ4OvvLKK+vXr+/o6BgYGDhx4oQy4uHDhwNkF0TLs9ns4cOHqZAXCoW0hHfffberq0u5dx45LQ/2CIdBy41IfFGogllpOSZc69nLyi9AxqoGt64JUmDddV3E9LfE5G5UXuSz7G9poiH6W2JeB0Kltdz/EBTStX/6qIV3eCyfueSyC9bfEjN/MAVLN8VUTV65SnhqdT4QV0WsBSIMX1r+L//yL7/73e/eeuutN998c8OGDf/xH//x2muvPf7449ls9u67777sssvuuuuuTCbz3nvv+dXybDb7ySeffGTik08+yWazLlpume1KH3t3d/enn3766aefHj16tKOjQ9bydDr99ddfd3d3y3GjpuVlWMRTrOWshWiVJd1EmpqauN/6ctZ49uGn3fK13L7kU8u5gvjScrkU3gdCiLXcaqtKjghP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" alt="" />

well ,done!!

本站所有博客皆是原创,如果转载请标明出处.小三爷在此多谢了!~~

框架开发(三)---smarty整合的更多相关文章

  1. SSM框架开发web项目系列(三) MyBatis之resultMap及关联映射

    前言 在上篇MyBatis基础篇中我们独立使用MyBatis构建了一个简单的数据库访问程序,可以实现单表的基本增删改查等操作,通过该实例我们可以初步了解MyBatis操作数据库需要的一些组成部分(配置 ...

  2. 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)

    转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...

  3. Ruby on Rails框架开发学习

    学习地址:http://www.ixueyun.com/lessons/detail-lessonId-685.html 一.课程概述 软件开发在经历了面向过程编程的阶段,现在正大行其道的是敏捷开发, ...

  4. 【SpringBoot】搜索框架ElasticSearch介绍和整合SpringBoot

    ========================12章 搜索框架ElasticSearch介绍和整合SpringBoot ============================= 加入小D课堂技术交 ...

  5. 在CI框架中的配置整合amfphp

    之前做的项目用到CI框架和amfphp的整合,主要用于php与flex的交互,在此做一下记录: 一. 安装CI框架: 1.  搭建PHP运行环境,本人在WIN7下用WAMP作测试,安装目录:d:/wa ...

  6. 第一天ci框架开发商城1

    ci框架开发商城1 1/28/2016 9:43:52 PM userguide删除 system application controllers 控制器 models 模型 views 视图 模板 ...

  7. 应用程序框架实战三十八:项目示例VS解决方案的创建(一)

    进行项目开发的第一步,是创建出适合自己团队习惯的VS解决方案,虽然我已经提供了项目示例,但毕竟是我创建的,你直接使用可能并不合适,另外你如果尝试模仿重新创建该示例,中间可能碰到各种障碍,特别是项目间的 ...

  8. JavaScript框架设计(三) push兼容性和选择器上下文

    JavaScript框架设计(三) push兼容性和选择器上下文 博主很久没有更博了. 在上一篇 JavaScript框架设计(二) 中实现了最基本的选择器,getId,getTag和getClass ...

  9. 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战

    前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...

随机推荐

  1. 微信sdk (1)

    <?php /** * wechat php test */ //define your token define("TOKEN", "weixin"); ...

  2. Java web 基础

  3. 更改Oracle数据文件名及数据文件存放路径

    更改Oracle数据文件名及数据文件存放路径 SQL> select * from v$dbfile;        FILE# NAME ---------- ---------------- ...

  4. leetcode Binary Tree Paths python

    # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = ...

  5. EBS OAF中如何在多行表中实现附件功能

    EBS OAF中如何在多行表中实现附件功能 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 在OAF中使用附件功能之前,要先明白Entity( ...

  6. substr(dirname(__FILE__))

    这是discuz中定义论坛安装根目录的一个常量.现在我们就来分析一下这个很简单但是非常实用的常量.     define('DISCUZ_ROOT', substr(dirname(__FILE__) ...

  7. silverlight imagesource赋值与转换

    介绍几种常用的Image source 赋值方式: this.abc.Source = new BitmapImage(new Uri("/1.jpg", UriKind.Rela ...

  8. nginx-configure执行大致流程

    1,configure 命令行参数处理 2,初始化各种文件路径 3,分析源码结构 4,生成编译过程中所需路径 5,准备 .h,.err等编译所需文件 6,写入命令行参数 7,检测环境(系统,编译器,第 ...

  9. the C programming language 阅读笔记1

    读了一遍著名的<the C programming language>,果然如听说的一样,讲解基础透彻,案例简单典型,确实自己C语言还有很多细节点不是很清楚. 总结一下阅读的收获(部分原书 ...

  10. wifi相关协议

    IEEE 802.11Wi-Fi 协议摘要 协议 频率 信号 最大,数据率 传统802.11 2.4GHz FHSS或DSSS 2Mbps 802.11a 5GHz OFDM 54Mbps 802.1 ...