smarty的原理:

<?php
class Smarty
{
$ldelimiter = "{";//左分隔符
$rdelimiter = "}";//友分隔符 $attr = array();//用来存贮变量的数组 //向模板里面注册变量
function assign($key,$value)
{
$this->attr[$key] = $value;
} //显示模板的方法
function display($url)
{
//1.获取静态模板的内容
$str = file_get_contents($url);
//2.根据正则匹配str里面出现的所有{}里面的内容
//{$a} -> <?php echo $attr[$a] ?> //3.将替换好的页面保存临时文件
touch(".test.php");
file_put_contents(); //4.将临时文件拿到当前页面显示
include(".test.php");
}
}

访问的是PHP文件,其中路径就按照访问的PHP文件来定。但是显示的是html。

test.php

test.php
<?php
include("../init.inc.php");
//注册变量
$smarty->assign("name","张三");
$smarty->assign("arr",array(1,2,3,4,5));
$smarty->assign("test","my name is zhangsan");
$smarty->assign("title",啊啊啊啊啊啊);
//显示模板
$smarty->display("test.html");

test.html

<html>
<head></head>
<body>
<{$name}>
<{$arr.one}>
<{config_load file='test.conf'} section='one'>
<div style="width:20px;height:20px;background-color:<{#color#}>"></div>
<{$smarty.now|date_format:%Y-%m-%d %H:%M:%S}>
<{$test|truncate:5}>//截取字符串
          <{date name ="riqi" value="2017-2-3" time=true}>
     <{color name="color"}>
     <{textarea name="txt" toolbar="full" color="red"}>
     <{/textarea}>//块函数要有首和尾
     
     <{cishu num=3}>
     <{font da=50}>
     电话卡会打架
     <{/font}>
     
</body>
</html> $smarty.const.XXX 取常量
$smarty.config.color 和 #color#一样

test.conf

[one]
color=red
[two]
color=green

自定义变量调节器modifier.keyword.php

<?php
function smarty_modifier_keyword($str,$key)
{
return str_replace($key,"<mark>{$key}</mark>",$str);
}

自定义函数function.cishu.php

//num参数代表输出次数
function smarty_function_cishu($args,$smarty)
{
$num = $args["num"]; $str = ""; for($i=0;$i<$num;$i++)
{
$str = $str."<div style='width:100px;height:100px;background-color:green'></div>";
}
return $str;
}

自定义块函数block.font.php

<?php
function smarty_block_font($args,$content,$smarty,$a)
{
if(!$a)//走头的时候没有内容,走尾的时候把内容改变
{
$da = $args["da"]; return "<span style='font-size:{$da}px'>{$content}</span>";
}
}

显示结果

 

SMARTY的知识的更多相关文章

  1. php常见面试(Smarty及相关知识)

    1.Smarty简介: 是一种php模板引擎,它分开了后台程序和前台页面内容,使程序员和美工分工合作.还有其它模版引擎实现同样的目的. 2.Smarty使用: 建立php文件: 包含smarty类文件 ...

  2. smarty模板基础知识

    1.定义 Smarty是一个使用php写出来的模板引擎,它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与html代码混杂在一起PHP代码逻辑分离. 简单的讲,目的就是要使PH ...

  3. smarty学习——高级知识

    1.Objects 对象 smarty允许通过模板访问PHP对象.有两种方式来访问它们.一种是注册对象到模板,然后通过类似于用户自定义函数的形式来访问它. 另一种方法给模板分配对象,然后通过访问其它赋 ...

  4. smarty学习——编程知识

    smarty 提供了丰富的api 接口可以方便我们进行操作: 1.clear_all_assign清除所有赋值 2.clear_all_cache清除所有缓存 3.clear_assign清除赋值 4 ...

  5. smarty模板引擎(一)基础知识

    一.基本概念 1.什么是mvc?     mvc是一种开发模式,核心思想是:数据的输入.数据的处理.数据显示的强制分离. 2.什么是smarty?     smarty是一个php的模板引擎.更明白的 ...

  6. smarty 快速上手

    smarty半小时快速上手入门教程 投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-10-27我要评论 这篇文章主要介绍了smarty半小时快速上手入门教程,以实例的形 ...

  7. smarty 学习记录

    smarty模版是比较大众化的一个模版,在php开发过程当中被很多开发者视为最友好的模版之一,学习smarty课程对于很多培训机构来说也是列入了培训课程之一,那么很多方面就需要我们学习了一. 安装首先 ...

  8. smarty半小时快速上手入门教程

    http://www.jb51.net/article/56754.htm http://www.yiibai.com/smarty/smarty_functions.html http://www. ...

  9. (转)PHP模板smarty简单入门教程

    转之--http://blog.163.com/zf_2011@126/blog/static/166861361201062595057962/ 如何在smarty中开始我们程序设计.PHP代码:- ...

随机推荐

  1. MyBatis原理总结(前期准备)

    1.不同框架解决不用问题,框架封装了很多细节,开发者可以使用简单的方式实现功能. 2.三层架构: 1.表现层  2.业务层  3.持久层  都有相应的处理框架. 3.持久层的技术解决方案: JDBC技 ...

  2. Spring cloud微服务安全实战-6-1本章概述

    这一章来讲一下,微服务之间的通讯安全. 当前这个架构还存在的问题 在网关上做限流还是有一些问题的.例如我的订单服务限流是100,库存服务限流也是100.但是我的订单服务会调用我的库存服务.那么在网关这 ...

  3. Qt编写自定义控件61-通用移动

    一.前言 通用移动类,目标就是为了实现放入任意的控件以后,支持鼠标拖动,在容器中或者父类中拖动,这个应用场景非常多,比如在地图上放置的设备,需要用户自行按下拖动到指定的合适的位置,然后保存设备的位置坐 ...

  4. 【计算机视觉】图像配准(Image Registration)

    (Source:https://blog.sicara.com/image-registration-sift-deep-learning-3c794d794b7a)  图像配准方法概述 图像配准广泛 ...

  5. 透过SourceTree再谈Git

    初出茅庐之基础篇 1. Download SourceTree from: https://www.sourcetreeapp.com/ 2.Complete the installation. 3. ...

  6. LODOP打印table表格宽度固定-超宽隐藏

    之前有博文介绍关于超出div隐藏内容的:LODOP打印超过后隐藏内容样式里面提到了overflow:hidden;控制超出后隐藏,但是前面那篇用的是div,如果是在table中,由于table默认的t ...

  7. Pyhon时间参数的应用

    Python获取 本周,上周,本月,上月,本季,上季,今年, 去年 # -*- coding: utf-8 -*-# @time: 2019-05-13 17:30 import datetime f ...

  8. ffmpeg.编译(20191129)

    1.一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay - HarlanC - 博客园.html(https://www. ...

  9. 【剑指offer】面试题 25. 合并两个排序的链表

    面试题 25. 合并两个排序的链表 NowCoder 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. Java 实现 ListNode Clas ...

  10. 《Mysql - 幻读》

    一:准备 - 为了深入了解幻读,准备数据. CREATE TABLE `t` ( `id` ) NOT NULL, `c` ) DEFAULT NULL, `d` ) DEFAULT NULL, PR ...