热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

1个例子搞定smarty的配置

在介绍smarty之前先讨论一下他们的区别,说实话,刚开始做开发的时候,真的没搞清楚他们的区别,感觉都差不多,记得有一次去面试,面试的人问我,模板和框架有什么区别,我说没什么区别,我汗

一,模板,框架,cms的区别

在介绍smarty之前先讨论一下他们的区别,说实话,刚开始做开发的时候,真的没搞清楚他们的区别,感觉都差不多,记得有一次去面试,面试的人问我,模板和框架有什么区别,我说没什么区别,我汗。举个例子:

1,如果把一个项目比做一个人体模具的话,那么模板就是衣服,而框架呢就是骨架。

2,没有衣服没关系可以不穿,如果没有骨架的话,要衣服有什么呢?php本身就是脚本语言,本身就可以输出。

3,但是如果做大项目没有模板的话,如果你要把网站改版一次,我想你会疯了得。

4,框架是约束程序员开发,使他们的代码尽量一致,相互都可以改。

5,cms是半成品的人体模具,东西都做的差不多,你只要在里面修修补补,就差不多,他对程序员的约束更大。


二,什么是smarty

Smarty是一个php模板引擎。更准确的说,它分开了逻辑程序和外在的表现内容,提供了一种易于管理的方法。css使html和style分开了,jquery的出现使得html和js分开了,我想模板的出现使php和html分开了。smarty算是一个不错的模板吧。

三,举例如下

1,配置文件init.php

查看复制打印?
  1. define('ROOT_PATH', dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR);   
  2. define('TEM_PATH', ROOT_PATH ."smartytest". DIRECTORY_SEPARATOR);   
  3.   
  4. $_path = array(   
  5.  '.',   
  6.  ROOT_PATH .DIRECTORY_SEPARATOR."smartytest".DIRECTORY_SEPARATOR.'smarty'.DIRECTORY_SEPARATOR.'libs',   
  7.  get_include_path(),   
  8. );   
  9. set_include_path(implode(PATH_SEPARATOR, $_path));   
  10. ?>  

2,control.php底基类

查看复制打印?
  1. session_start();   
  2.   
  3. require('Smarty.class.php');   
  4.   
  5. class Controller   
  6. {   
  7.  public $tpl = NULL;   
  8.   
  9.  public function __construct() {   
  10.  $this->tpl = new Smarty();   
  11.  $this->tpl->debugging = false;   
  12.  $this->tpl->compile_check = true;   
  13.  $this->tpl->force_compile = false;   
  14.  $this->tpl->cache_dir = TEM_PATH ."templates_cache";   
  15.  $this->tpl->template_dir = TEM_PATH . "templates";   
  16.  $this->tpl->compile_dir  = TEM_PATH . "templates_c";   
  17.  $this->tpl->cache  =  false;   
  18.  }   
  19.   
  20.  public function addCss($css) {   
  21.  if (!is_array($css)) {   
  22.  $this->tpl->append('cssArr', $css);   
  23.  } else {   
  24.  $this->tpl->append('cssArr', $css, true);   
  25.  }   
  26.  }   
  27.   
  28.  public function addJs($js) {   
  29.  if (!is_array($js)) {   
  30.  $this->tpl->append('jsArr', $js);   
  31.  } else {   
  32.  $this->tpl->append('jsArr', $js, true);   
  33.  }   
  34.  }   
  35. }   
  36. ?>  
tpl = new Smarty();
 $this->tpl->debugging = false;
 $this->tpl->compile_check = true;
 $this->tpl->force_compile = false;
 $this->tpl->cache_dir = TEM_PATH ."templates_cache";
 $this->tpl->template_dir = TEM_PATH . "templates";
 $this->tpl->compile_dir  = TEM_PATH . "templates_c";
 $this->tpl->cache  =  false;
 }

 public function addCss($css) {
 if (!is_array($css)) {
 $this->tpl->append('cssArr', $css);
 } else {
 $this->tpl->append('cssArr', $css, true);
 }
 }

 public function addJs($js) {
 if (!is_array($js)) {
 $this->tpl->append('jsArr', $js);
 } else {
 $this->tpl->append('jsArr', $js, true);
 }
 }
}
?>

3,入口index.php

查看复制打印?
  1.   
  2. require_once 'init.php';   
  3. require_once 'control.php';   
  4.   
  5. class indexController extends Controller {   
  6.  private $templateName  = 'index.tpl';   
  7.  private $test  = array("安徽","合肥","六安","苏埠");   
  8.   
  9.  public function __construct(){   
  10.  parent::__construct();   
  11.  }   
  12.   
  13.  //页面入口程序   
  14.  public function indexAction(){   
  15.  $this->tpl->assign("checkbox",$this->test);   
  16.  }   
  17.   
  18.  //模板渲染   
  19.  public function showTemplate(){   
  20.  $this->tpl->display($this->templateName);   
  21.  }   
  22.   
  23. }   
  24. $objIndex = new indexController();   
  25. $objIndex->indexAction();   
  26. $objIndex->showTemplate();   
  27. ?>  
tpl->assign("checkbox",$this->test);
 }

 //模板渲染
 public function showTemplate(){
 $this->tpl->display($this->templateName);
 }

}
$objIndex = new indexController();
$objIndex->indexAction();
$objIndex->showTemplate();
?>

想法很简单的一种方法来搭建smarty。点击这里下载这个例子


推荐阅读
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • Appium + Java 自动化测试中处理页面空白区域点击问题
    在进行移动应用自动化测试时,有时会遇到某些页面没有返回按钮,只能通过点击空白区域返回的情况。本文将探讨如何在Appium + Java环境中有效解决此类问题,并提供详细的解决方案。 ... [详细]
  • 本文探讨了在构建应用程序时,如何对不同类型的数据进行结构化设计。主要分为三类:全局配置、用户个人设置和用户关系链。每种类型的数据都有其独特的用途和应用场景,合理规划这些数据结构有助于提升用户体验和系统的可维护性。 ... [详细]
  • Linux中的yum安装软件
    yum俗称大黄狗作用:解决安装软件包的依赖关系当安装依赖关系的软件包时,会将依赖的软件包一起安装。本地yum:需要yum源,光驱挂载。yum源:(刚开始查看yum源中的内容就是上图 ... [详细]
  • 鼠标悬停出现提示信息怎么做
    概述–提示:指启示,提起注意或给予提醒和解释。在excel中会经常用到给某个格子增加提醒信息,比如金额提示输入数值或最大长度值等等。设置方式也有多种,简单的,仅为单元格插入批注就可 ... [详细]
  • 气象对比分析
    本文探讨了不同地区和时间段的天气模式,通过详细的图表和数据分析,揭示了气候变化的趋势及其对环境和社会的影响。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 深入理解ExtJS:从入门到精通
    本文详细介绍了ExtJS的功能及其在大型企业前端开发中的应用。通过实例和详细的文件结构解析,帮助初学者快速掌握ExtJS的核心概念,并提供实用技巧和最佳实践。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文详细介绍如何在 iOS 7 环境下申请苹果开发者账号,涵盖从访问开发者网站到最终激活账号的完整流程。包括选择个人或企业账号类型、付款方式及注意事项等。 ... [详细]
  • 本文介绍了如何通过Java代码计算一个整数的位数,并展示了多个基础编程示例,包括求和、平均分计算、条件判断等。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 本篇文章介绍如何将两个分别表示整数的链表进行相加,并生成一个新的链表。每个链表节点包含0到9的数值,如9-3-7和6-3相加得到1-0-0-0。通过反向处理链表、逐位相加并处理进位,最终再将结果链表反向,即可完成计算。 ... [详细]
author-avatar
蓝沫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有