Smarty的应用

smarty模板的核心是一个类,下载好的模板中有这么几个重要的文件夹

(1)libs核心文件夹
(2)int.inc.php这是入口文件
(3)plugins:自己写的插件文件夹
(4)templates_c:存放编译好的文件
(5)int.inc.php这是入口文件
(6)定义好常量:不能修改

二、怎么用模板?

模板页面
1.引入模板的入口文件
include("入口文件路径位置");

2.直接用对象
提供一个方法:向模板中注册变量的方法(assign(名字,值)
$smarty->assign("ceshi","你好");
提供一个方法:显示模板的(display(模板的名称或是路径))
$smarty->display("ceshi.html");

正常页面
{assign(名字)}

注意:
1.访问的是php的页面,显示的是html页面
2.html用到了外部的样式表,位置是相对于访问的php页面来找外部样式

(1)php页面

<?php
$filename = "../cache/huancun.html";  //这个是放缓存的页面(缓存的不是代码,而是页面的源信息)

include("../init.inc.php");  //引入入口文件
include("../DBDA.php");   //引入数据库,要用到数据库的内容

$db = new DBDA();  //造新对象
$sql = "select * from chinastates";  //这是查找Chinastates表中的信息
$attr = $db->Query($sql);  //执行这个语句

$smarty->assign("shuzu",$attr);  //注册变量信息
$smarty->display("huancun.html");  //显示模板

  

(2)html页面

可以用表来显示数据

<h1>数据列表</h1>
<table width="50%" border="1" cellpadding="0" cellspacing="0">
        <tr>
            <td>代号</td>
            <td>名称</td>
            <td>操作</td>
        </tr>

        <{foreach $shuzu as $v}>   <!--遍历显示这个表中的相应信息-->
            <tr>
                <td><{$v[0]}></td>
                <td><{$v[1]}></td>
                <td>操作</td>
            </tr>
        <{/foreach}>

</table>

  

看下效果

二、就是编写“缓存”功能

进行写入缓存的时候不是写入的上面的php页面,而是这个页面的源代码

(1)这个cache文件中要判断这个huancun.html文件存不存在,存在怎么样?不存在怎么样?

结果就是:如果缓存文件存在:直接调用缓存;如果缓存文件不存在:重新缓存。

A.如果这个文件存在(判断文件存不存在用的是:file_exists()方法)语句:

if(file_exists($filename))
{
    //直接调用缓存
    include($filename);
}

  

B.否则(文件不存在)

重要的是要在上面读取数据库的内容加上这几项:

1.开启内存缓存;

2.关闭内存缓存;

它们是成对的!!!

else
{
    //重新缓存
    ob_start();   //开启内存缓存

    include("../init.inc.php");
    include("../DBDA.php");

    $db = new DBDA();
    $sql = "select * from chinastates";
    $attr = $db->Query($sql);

    $smarty->assign("shuzu",$attr);
    $smarty->display("huancun.html");

    $str = ob_get_contents();  //获取内存中的缓存内容
    file_put_contents($filename,$str);  //将字符串中的内容放入$filename的文件中

    ob_flush(); //关闭内存缓存

    echo "#######################################";  //这个是为了区别哪个是刚出来的缓存文件

}

  

看下效果如下图,因为cache文件夹中没有hunacun.html才会走上面的“否则”语句,输出一长串的######

再刷新一下就没有了,因为cache文件夹中已经有了huancun.html文件

三、缓存的有效时间

缓存要是一直都在的话,那么后台怎么改,前面也不会进行修改,那么就要尽心缓存的有效时间

代码如下:

$time = 10;  //缓存有效期10秒
if(file_exists($filename) && ((filemtime($filename)+$time)>= time()) )  //这是对缓存文件的判断

  

当缓存文件有了并且10秒之后就会重新又没有缓存文件时候的输出####  

四、进行分页的缓存

首先是分页的php页面的书写,在上面的更新的php页面中进行再一次修改,如下:

<?php
$p = 1;
if(!empty($_GET["page"]))
{
    $p = $_GET["page"];
}

$filename = "../cache/huancun{$p}.html";   //缓存文件存放的位置

$time = 10;  //缓存有效期10秒
if(file_exists($filename) && ((filemtime($filename)+$time)>= time()) )
{
    //直接调用缓存
    include($filename);
}
else
{
    //重新缓存
    ob_start();   //开启内存缓存

    include("../init.inc.php");
    include("../DBDA.php");

    $db = new DBDA();
    $sqll = "select count(*) from chinastates";
    $zts = $db->StrQuery($sqll);  //总条数的执行语句

    include("../page.class.php");
    $page = new Page($zts,10);  //分页显示的条数

    $sql = "select * from chinastates ".$page->limit;  //分页的$page->limit
    $attr = $db->Query($sql);

    $smarty->assign("fpage",$page->fpage());  //分页信息的显示
    $smarty->assign("shuzu",$attr);
    $smarty->display("huancun.html");

    $str = ob_get_contents();  //获取内存中的缓存内容
    file_put_contents($filename,$str);  //将$str的内容写入$filename的文件中

    ob_flush(); //关闭内存缓存

    echo "#######################################";

}

  

结果就是入下,每一个页面都会从缓存开始有,10秒后失效

这是第二个页面,刚开始没有缓存文件,所以会有####

随便点一页,回来后就是有了缓存文件,所以没有了###

时间: 2024-08-04 12:46:01

Smarty的应用的相关文章

smarty变量调节器如何使用

smarty变量调节器是用来改变显示的值,不改变变量的值.这里给大家总结了一下,希望对大家的smarty学习有参考意义. 1.capitalize[首字符大写]  调用方法: <?php$smarty->assign('articleTitle', 'next x-men film, x3, delayed.');?> 调用方法: {$articleTitle} {$articleTitle|capitalize} {$articleTitle|capitalize:true} 实现结果

Smarty 函数讲解

这里给大家总结了几种Smarty 函数并分别详细讲解了.如果你正在学习Smarty  ,希望这篇文章对你有用. html_checkboxes 自定义函数 html_checkboxes 根据给定的数据创建复选按钮组. 该函数可以指定哪些元素被选定. 要么必须指定 values 和 ouput 属性,要么指定 options 替代. 所有的输出与 XHTML 兼容 html_checkbox用来用给定的数据创建checkbox.name表示checkbox的名称,values表示checkbox

smarty变量调节器

1.capitalize[首字符大写]  调用方法: <?php$smarty->assign('articleTitle', 'next x-men film, x3, delayed.');?> 调用方法: {$articleTitle} {$articleTitle|capitalize} {$articleTitle|capitalize:true} 实现结果: next x-men film, x3, delayed. Next X-Men Film, x3, Delayed.

Smarty 模板引擎下缓存设置

缓存:就是将用户重复使用的内容进行缓存生成HTML内容. 缓存类型 全局缓存: 将整个页面内容都生成静态内容. Cache_dir: 缓存目录配置 Cache_lifetime:缓存的有效周期 Cacheing:设置是否开启缓存 局部缓存: 控制整个页面中的某个内容缓存,或者某个内容不缓存. insert函数调用的内容不缓存: 定义insert类型的函数: Smarty 2.x版本: Function insert_插件名(参数列表){ 功能代码 } Smarty 3.x版本: Function

前端学PHP之Smarty模板引擎

前面的话 对PHP来说,有很多模板引擎可供选择,但Smarty是一个使用PHP编写出来的,是业界最著名.功能最强大的一种PHP模板引擎.Smarty像PHP一样拥有丰富的函数库,从统计字数到自动缩进.文字环绕以及正则表达式都可以直接使用,如果觉得不够,SMARTY还有很强的扩展能力,可以通过插件的形式进行扩充.另外,Smarty也是一种自由软件,用户可以自由使用.修改,以及重新分发该软件.本文将详细介绍Smarty模板引擎 概述 Smarty是一个php模板引擎.更准确的说,它分离了逻辑程序和外

Smarty的基本使用

含义: Smarty是PHP的一个引擎模板,可以更好的进行逻辑与显示的分离,即我们常说的MVC,这个引擎的作用就是将C分离出来. 环境需求:PHP5.2或者更高版本 我使用的环境是:PHP5.3,windows 环境 安装: 在网上下载Smarty包直接将其解压,我们需要的仅仅是里面的libs文件夹.Libs文件里面都是库文件,我们不应该修改里面的任何内容.解压完毕后就直接将libs文件夹放入到我们需要使用的网站根目录. 使用: 首先打开Smarty.class.php文件看看里面的一些代码:

模板引擎(smarty)知识点总结II

今天咱们继续来学习smarty!!! 知识点1:对于三种变量 常量的引用 有哪三种变量?a.assign赋值 b.系统保留变量(包括:$smarty.get,$smarty.post,$smarty.cookie,$smarty.session,$smarty.file,$smarty.request,$smarty.server,$smarty.env)c.配置文件   一般配置文件以.conf为主 $id = $_GET['id']?(int)$_GET['id']:0; #要在html页面

PHP Smarty 页面静态化加分页和缓存控制

PHP页面 <?php  //打开输出控制缓冲 ob_start(); //新建模板文件 $file = "./cache/newindex{$_GET['page']}.html"; $cachetime = 10; const  DSN = 'mysql:host=localhost;dbname=test'; const   DBUSER = 'root'; const   DBPWD     = 'root'; //模板不存在或者超过缓存时间才生成缓存模板 if(!fil

Smarty变量调节器(可以参考手册)

<?php require_once 'libs/Smarty.class.php'; $smarty=new Smarty; $smarty->left_delimiter="<{"; $smarty->right_delimiter="}>";  $smarty->assign("a","hello world"); $smarty->assign("b",&q