自建函数是smarty提供的函数,不允许修改,只能被调用;

自定义函数是自己编写函数,注册成为smarty的函数,之后可以被调用;

示例:使用smarty自定义函数的机制,编写一个函数myfun1,通过调用该函数(可以输入必要的参数),完成循环输出5次“hello,顺平”,要求内容,颜色,字体大小均可置顶。

(1)自定义函数

//编写自定义函数
function test1($args){
$str = "";
for($i = 1;$i<= $args['times'];$i++){
$str .= "<font size='{$args['size']}' color='{$args['color']}'>{$args['con']}</font><br/>";
}
return $str;
} //注册自定义函数
$smarty->register_function("lhy1","test1");
<{*tpl中引用自定义函数*}>
<{lhy1 times="5" size="5" con="Hello,顺平" color="red"}>

(2)自定义块

//编写自定义函数
function test2($args,$con){
$str = "";
for($i = 1;$i<= $args['times'];$i++){
$str .= "<font size='{$args['size']}' color='{$args['color']}'>{$con}</font><br/>";
}
return $str;
} //注册自定义函数
$smarty->register_block("lhy2","test2");
<{lhy2 times="5" size="5" color="red"}>
Hello,顺平
<{/lhy2}>

(3)利用samrty插件形式增加自定义函数

在smarty包中plugins文件夹下,新建一个文件function.lhy4.php。

文件名的格式:function.自定义函数名.php

function.lhy4.php代码页内容如下,

函数的名字:function smarty_function_自定义函数名($params, &$smarty)。

<?php

function smarty_function_lhy4($params, &$smarty){
$str = "";
for($i = 1;$i<= $params['times'];$i++){
$str .= "<font size='{$params['size']}' color='{$params['color']}'>{$params['con']}</font><br/>";
}
return $str;
}
<{lhy4 times="5" size="5" con="Hello,顺平" color="red"}>

(4)利用samrty插件形式增加自定义块

在smarty包中plugins文件夹下,新建一个文件function.lhy5.php。

文件名的格式:block. 块名.php

function.lhy4.php代码页内容如下,

函数的名字:function smarty_block_块名($params,$content, &$smarty)。

<?php
function smarty_block_lhy5($params, $content, &$smarty){
$str = "";
for($i = 1;$i<= $params['times'];$i++){
$str .= "<font size='{$params['size']}' color='{$params['color']}'>{$content}</font><br/>";
}
return $str;
}
<{lhy5 times="5" size="5" color="red"}>
Hello,顺平
<{/lhy5}>

五,Smarty模板技术/引擎——自定义函数机制的更多相关文章

  1. 三,Smarty模板技术/引擎——变量操作(2)

    1, 变量的分类 ① 从PHP中分配的变量,比如a.php跳转到b.php时候,可以在a.php中分配变量,b.tpl中直接调用.a.php中代码,$smarty->assign(‘str’,’ ...

  2. 四,Smarty模板技术/引擎-----内建函数

    内建函数是smarty提供的函数,不允许修改,只能被调用: 自定义函数是自己编写函数,注册成为smarty的函数,之后可以被调用. PHP的自建函数很多,讲解下<foreach>和< ...

  3. 一,Smarty模板技术/引擎——简介

    Smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使PHP程序员与美工分离,使用的程序员改变程序的逻辑内容不会影响到美工的页面设计,美工重新修改 ...

  4. 二 ,Smarty模板技术/引擎——变量操作(1)

    1,基本变量 $smarty->assign('data1',3); $smarty->assign('data2',3.45); $smarty->assign('data3',' ...

  5. Smarty模板技术学习

    模板引擎技术:使得php代码和html代码分离的技术就称为"模板引擎技术" 自定义smarty模板技术实现 <?php //迷你smarty原理 class MiniSmar ...

  6. 在smarty模板中使用PHP函数的方法

    在smarty模板中如果要在显示的资料使用php函数时,如果是只有一个参数的函数比如说去空白的trim会写成 sample1 代码如下: <{$colname|trim}> 那如果使用像i ...

  7. smarty模板技术

    一.什么是smarty?smarty是一个使用php写出来的模板php模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用php程序员同美工分离,使用的程序员改变程序的逻辑内容不会影响到美 ...

  8. smarty详细使用教程(韩顺平smarty模板技术笔记)

    MVC是一种开发模式,强调数据的输入.处理.显示是强制分离的 Smarty使用教程1.如何配置我们的smarty解压后把libs文件夹放在网站第一级目录下,然后创建两个文件夹templates 存放模 ...

  9. Smarty模板技术学习(二)

    本文主要包括以下内容 公共文件引入与继承 内容捕捉 变量调剂器 缓存 Smarty过滤器 数据对象.注册对象 与已有项目结合 公共文件引入与继承 可以把许多模板页面都用到的公共页面放到单独文件里边,通 ...

随机推荐

  1. java 蓝桥杯基础练习 01字串 进制转换

    问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能.它们的前几个是: 请按从小到大的顺序输出这32种01串. 输入格式 本试题没有输入. 输出格式 输出32行,按从小到大的顺 ...

  2. java tomcat报错: Starting Tomcat v7.0 Server at localhost' has encountered a problem问题

    运行web项目的时候出现下面错误: 出现这个问题的原因是 这个tomcat在其他项目中正在运行 关掉即可.

  3. Linux系统profile、bashrc、bash_profile等环境设置文件的使用

    一.前言 关于bash的环境设置文件,分为系统设置和个人设置,一般来说建议用户直接修改个人的设置. 本文测试环境为:centos6.5. 二.系统设置值 1. /etc/sysconfig/i18n ...

  4. linux系统软件版本升级

    在安装完软件之后,在同一层目录生成一个符号链接,并把当前软件的目录映射到这个链接上,后面的操作都只通过这个链接去做,以后升级版本的时候,把最新的软件目录映射到这个链接上就可以了. 如我刚装的apach ...

  5. sqlserver服务器硬件性能瓶颈分析

    硬件性能瓶颈 内存 内存对SQL Server性能的影响胜过任何其他硬件.因此,对SQL Server系统的内存使用情况进行定期监视以确保内存的可用百分比高于20%是很有必要的.如果用户遭遇性能问题, ...

  6. Java多线程—JUC原子类

    根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类. 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;2. 数组类型: AtomicIn ...

  7. .net 自定义AOP,透明代理与真实代理

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...

  8. HttpClient 上传/下载文件计算文件传输进度

    1.使用ProgressMessageHandler 获取进度 using namespace System.Net.Http; HttpClientHandler hand = new HttpCl ...

  9. 实践作业3:白盒测试----总结与反思DAY12.

    ---恢复内容开始--- 阶段一:熟悉白盒测试方法 负责人:刘思佳 工作质量评价:用例设计详细,考虑到白盒测试基于代码,所以尽可能地覆盖更多的白盒测试方法,对系统可能存在的缺陷就更容易了解.对管理员和 ...

  10. HttpContext.Current.Session[strName]未将对象引用设置到对象的实例

    项目开发是在4.5.1上,不知道为啥客户提供的服务器上安装的是4.5,差别不大也没去升级,然后部署MVC的时候web.config报错 <system.web> <compilati ...