php入门smarty模板学习实例(1/5)

不知道从什么时候开始,有人开始对
HTML 内嵌入 Server Script 觉得不太满意。然而不论是微软的 ASP 或是开放源码的 PHP,都是属于内嵌 Server Script
的网页伺服端语言。因此也就有人想到,如果能把程序应用逻辑 (或称商业应用逻辑) 与网页呈现 (Layout)
逻辑分离的话,是不是会比较好呢?

其实这个问题早就存在已久,从交互式网页开始风行时,不论是 ASP 或是 PHP
的使用者都是身兼程序开发者与视觉设计师两种身份。可是通常这些使用者不是程序强就是美工强,如果要两者同时兼顾,那可得死掉不少脑细胞...

所以模版引擎就应运而生啦!模版引擎的目的,就是要达到上述提到的逻辑分离的功能。它能让程序开发者专注于资料的控制或是功能的达成;而视觉设计师则可专注于网页排版,让网页看起来更具有专业感!因此模版引擎很适合公司的网站开发团队使用,使每个人都能发挥其专长!

就笔者接触过的模版引擎来说,依资料呈现方式大概分成:需搭配程序处理的模版引擎和完全由模版本身自行决定的模版引擎两种形式。

在需搭配程序处理的模版引擎中,程序开发者必须要负责变量的呈现逻辑,也就是说他必须把变量的内容在输出到模版前先处理好,才能做
assign 的工作。换句话说,程序开发者还是得多写一些程序来决定变量呈现的风貌。而完全由模版本身自行决定的模版引擎,它允许变量直接 assign
到模版中,让视觉设计师在设计模版时再决定变量要如何呈现。因此它就可能会有另一套属于自己的模版程序语法 (如 Smarty)
,以方便控制变量的呈现。但这样一来,视觉设计师也得学习如何使用模版语言。

模版引擎的运作原理,首先我们先看看以下的运行图:

一般的模版引擎
(如 PHPLib) 都是在建立模版对象时取得要解析的模版,然后把变量套入后,透过 parse() 这个方法来解析模版,最后再将网页输出。


Smarty 的使用者来说,程序里也不需要做任何 parse 的动作了,这些 Smarty 自动会帮我们做。而且已经编译过的网页,如果模版没有变动的话,
Smarty
就自动跳过编译的动作,直接执行编译过的网页,以节省编译的时间。

使用Smarty的一些概念

在一般模版引擎中,我们常看到区域的观念,所谓区块大概都会长成这样:
<!--
START : Block name -->
区域内容
<!-- END : Block name
-->

这些区块大部份都会在 PHP 程序中以 if 或 for, while
来控制它们的显示状态,虽然模版看起来简洁多了,但只要一换了显示方式不同的模版, PHP 程序势必要再改一次!

在 Smarty
中,一切以变量为主,所有的呈现逻辑都让模版自行控制。因为 Smarty 会有自己的模版语言,所以不管是区块是否要显示还是要重复,都是用 Smarty 的模版语法
(if, foreach, section) 搭配变量内容作呈现。这样一来感觉上好象模版变得有点复杂,但好处是只要规划得当, PHP
程序一行都不必改。

由上面的说明,我们可以知道使用Smarty 要掌握一个原则:将程序应用逻辑与网页呈现逻辑明确地分离。就是说 PHP
程序里不要有太多的 HTML 码。程序中只要决定好那些变量要塞到模版里,让模版自己决定该如何呈现这些变量 (甚至不出现也行)

Smarty的基础

安装Smarty

首先,我们先决定程序放置的位置。

Windows下可能会类似这样的位置:「
d:appservwebdemo 」。

Linux下可能会类似这样的位置:「 /home/jaceju/public_html/
」。

到Smarty的官方网站下载最新的Smarty套件:http://smarty.php.net。

解开 Smarty
2.6.0 后,会看到很多档案,其中有个 libs 资料夹。在 libs 中应该会有 3 个 class.php ?n + 1 个 debug.tpl + 1 个
plugin 资料夹 + 1 个 core 资料夹。然后直接将 libs 复制到您的程序主资料夹下,再更名为 class
就可以了。就这样?没错!这种安装法比较简单,适合一般没有自己主机的使用者。

至于 Smarty
官方手册中为什么要介绍一些比较复杂的安装方式呢?基本上依照官方的方式安装,可以只在主机安装一次,然后提供给该主机下所有设计者开发不同程序时直接引用,而不会重复安装太多的
Smarty 复本。而笔者所提供的方式则是适合要把程序带过来移过去的程序开发者使用,这样不用烦恼主机有没有安装 Smarty

程序的资料夹设定

以笔者在Windows安装Appserv为例,程序的主资料夹是「d:appservwebdemo」。安装好Smarty后,我们在主资料夹下再建立这样的资料夹:


Linux 底下,请记得将 templates_c 的权限变更为 777 。Windows
下则将其只读取消。

第一个用Smarty写的小程序

我们先设定 Smarty
的路径,请将以下这个档案命名为 main.php ,并放置到主资料夹下:

 代码如下 复制代码
main.php:
<?php
include
"class/Smarty.class.php";
define('__SITE_ROOT', 'd:/appserv/web/demo'); //
最后没有斜线
$tpl = new Smarty();
$tpl->template_dir = __SITE_ROOT .
"/templates/";
$tpl->compile_dir = __SITE_ROOT .
"/templates_c/";
$tpl->config_dir = __SITE_ROOT .
"/configs/";
$tpl->cache_dir = __SITE_ROOT .
"/cache/";
$tpl->left_delimiter = '<{';
$tpl->right_delimiter =
'}>';
?>

首页 1 2 3 4 5 末页

时间: 2024-12-10 05:54:45

php入门smarty模板学习实例(1/5)的相关文章

PHP文件缓存smarty模板应用实例分析_php实例

本文实例分析了PHP文件缓存smarty模板应用.分享给大家供大家参考,具体如下: 一.使用缓存 要开启smarty的缓存,只需将caching设为true,并指定cache_dir即可. 使用cache_lefetime指定缓存生存时间,单位为秒 要对相同页面生成多个不同的缓存,在display或fetch中加入第二参数cache_id,如: $smarty->display('index.tpl',$my_cache_id); 此特性可用于对不同的$_GET进行不同的缓存  二.清除缓存 c

smarty 模板foreach 实例与教程

{foreach}的用于循环通过一个关联数组,以及一个数字索引的数组,与{section}这对循环以上数字索引的数组只.为{foreach}的语法比{section}的,但是作为一个只能使用一个单一阵列权衡.每个{foreach}的标签必须成对以结束{/ foreach}的标签 */ //一维数据 $arr = array(9 => 'Tennis', 3 => 'Swimming', 8 => 'Coding'); $smarty->assign('myArray', $arr)

smarty模板引擎基础知识入门_php实例

本文实例讲述了smarty模板引擎基础知识.分享给大家供大家参考.具体如下: 一.基本概念 1.什么是mvc? mvc是一种开发模式,核心思想是:数据的输入.数据的处理.数据显示的强制分离. 2.什么是smarty? smarty是一个php的模板引擎.更明确的来说,它可以帮助开发者更好的分离程序逻辑和页面显示. 3.smarty运行原理 模板文件,就是一个显示数据的模板,其中需要显示的数据用占位符代替. smarty运行时,会读取模板文件,将模板文件中的占位符替换成真正的数据,并输出一个处理后

smarty 模板if else使用实例与入门教程

smarty 模板if else使用实例与入门教程 smarty 主要功能是完成美工与程序分离,并且使用的缓存技术,减轻服务器的负载, smarty 以在文件中放置特殊的"Smarty标签"来产生网页内容.这些标签会被处理并替换成其他的内容.   */ require('smarty/libs/Smarty.class.php教程'); $tpl = new Smarty(); $tpl->template_dir   = 'd/' $tpl->compile_dir   

Smarty模板快速入门

快速入门|模板 在PHP的世界里已经出现了各式各样的模板类,但就功能和速度来说Smarty还是一直处于领先地位,因为Smarty的功能相对强大,所以使用起来比其他一些模板类稍显复杂了一点.现在就用30分钟让您快速入门. 一. 安装     首先打开网页http://smarty.php.net/download.php,下载最新版本的Smarty.解压下载的文件(目录结构还蛮复杂的).接下来我演示给大家一个安装实例,看过应该会举一反三的.     (1) 我在根目录下建立了新的目录learn/,

Smarty模板常见的简单应用分析_php实例

本文实例分析了Smarty模板常见的简单应用.分享给大家供大家参考,具体如下: 首先要将smarty这个类包含进来: include_once '../libs/Smarty.class.php'; 然后创一个Smarty对象: $smarty = new Smarty; 可以自定义Smarty 的开始结束符,默认为{ } $smarty->left_delimiter ='<<'; //左符号为 << $smarty->right_delimiter='>>

Smarty模板引擎缓存机制详解_php实例

本文实例讲述了Smarty模板引擎缓存机制.分享给大家供大家参考,具体如下: 首先说下smarty缓存和编译,这是两个不同的概念,编译默认情况下是启动的,而缓存机制需要人为开启,smarty编译过的文件还是php文件,所以执行的时候还是编译的,如果涉及到数据库,还是要访问数据库的所以开销也不小啦,所以需要smarty缓存来解决! 1.开启全局缓存 $smarty->cache_dir = "/caches/"; //缓存目录 $smarty->caching = true;

自定义min版smarty模板引擎MinSmarty.class.php文件及用法_php实例

本文实例讲述了自定义的min版smarty模板引擎MinSmarty.class.php文件.分享给大家供大家参考,具体如下: 一.smarty的优点 smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一.它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离.简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻

Smarty模板变量调节器用法分析_php实例

本文讲述了Smarty模板变量调节器用法.分享给大家供大家参考,具体如下: 在smarty里面,怎么修饰文本和变量呢?当然,你可以通过php函数处理文本,然后再通过assign()方法分配到模板,其实smarty提供了变量调节器能够很容易的处理文本,语法方式如下: {$var|modifier1|modifier2|modifier3|-} 说明:1.不管应用了多少个函数,都应该以|来进行分离. 说明:2.参数用":"分开,如: {$str|truncate:40:"...&