PHP模板引擎斯Matty中的保留变量用法深入分析,PHP模板引擎Smarty内建函数详解

正文实例陈述了PHP模板引擎斯马特y中的保留变量用法。分享给我们供我们参谋,具体如下:

本文实例呈报了PHP模板引擎斯马特y内建函数。共享给我们供我们参照他事他说加以考察,具体如下:

正文实例陈说了PHP模板引擎Smarty自定义变量调节器用法。分享给大家供我们参谋,具体如下:

在 斯马特y 中,有局地保留变量,它们是没有供给 PHP
脚本去分配就足以直接行使,即不用选用 $_tpl->assign(‘var’,’value’)
去分配。

斯马特y
的内建函数:斯马特y自带一些内建函数,内建函数是模板语言的一局地,用户不能够创设名称和内建函数相同的自定义函数,也无法修改内建函数。

在 PHP
中,有比很多拍卖公事的函数,您能够把要拍卖的文件通过函数管理今后,再调用
Smarty 模板引擎中的 assign() 赋值给变量,分配到模板中举办展示。

1、在模板中拜望页面须求的变量

下面临 斯马特y 中的内建函数进行表明,并加以实例:

斯马特y 中的变量调度器和 PHP 中拍卖文件的函数相似,然则语法不均等,在
斯马特y 中,是因而 “|” 前面直接跟调度器函数名,借使有参数,得加在 “:”
前面,多少个参数的话,累加就能够。

{$smarty.get.user} == $_GET['user']
{$smarty.post.user} == $_POST['user']
{$smarty.cookie.username} == $_COOKIE['username']
{$smarty.session.username} == $_SESSION['username']
{$smarty.server.REMOTE_ADDR} == $_SERVER["REMOTE_ADDR"]
{$smarty.env.PATH} == $_ENV['PATH']
{$smarty.request.username} == $_REQUEST['username']

实例中央银行使到的 斯玛特y 模板引擎开始化文件 init.inc.php 和主文件 index.php

格式:{$var|modifier1:”参数1″:”参数2″:参数3|modifier2|modifier3|…}

2、在模板文件中做客 PHP 脚本中定义的常量和类别常量

init.inc.php

概念调节器的文件必须放置在 Smarty
中,具体路子是:libs/plugins/。其文件名称,必须比照 斯玛特y 的格式
modifier.调节器名.php

{$smarty.const.__FILE__}  //当前执行的 PHP 文件
{$smarty.const.CONST_VAR}  //访问 PHP 脚本中 define 定义的常量
<?php
  define('ROOT_PATH', dirname(__FILE__)); //设置网站根目录
  require ROOT_PATH.'/libs/Smarty.class.php'; //加载 Smarty 模板引擎
  $_tpl = new Smarty(); //创建一个实例对象
  $_tpl->template_dir = ROOT_PATH.'/tpl/'; //重新指定模板目录
  $_tpl->compile_dir = ROOT_PATH.'./com/'; //重新指定编译目录
  $_tpl->left_delimiter = '<{'; //重新指定左定界符
  $_tpl->right_delimiter = '}>'; //重新指定右定界符
?>

下边通过多少个实例演示 Smarty 中,自定义变量调节器的利用

3、在模板文件中得到当前服务器的日子

index.php

先后思路:做三个变量调节器,功能是:一个转换文本;一个截取文本。

复制代码 代码如下:

<?php
  require 'init.inc.php'; //引入模板初始化文件
  global $_tpl;
  $_tpl->display('index.tpl'); //引入模板
?>

init.inc.php(斯马特y开端化文件)

{$smarty.now|date_format:”%Y-%m-%d %H:%M:%S”}  == PHP脚本中的
date(‘Y-m-d H:i:s’,time())

1、capture

<?php
  define('ROOT_PATH', dirname(__FILE__)); //设置网站根目录
  require ROOT_PATH.'/libs/Smarty.class.php'; //加载 Smarty 模板引擎
  $_tpl = new Smarty(); //创建一个实例对象
  $_tpl->template_dir = ROOT_PATH.'/tpl/'; //设置模板文件目录
  $_tpl->compile_dir = ROOT_PATH.'./com/'; //设置编译文件目录
  $_tpl->left_delimiter = '<{'; //设置左定界符
  $_tpl->right_delimiter = '}>'; //设置右定界符
?>

4、配置文件在模板中的访谈

属性 类型 是否必须 缺省值 描述
name string no default 数据采集区域名称
assign string No n/a 数据采集区域在哪分配给变量name[待考]

index.php(主文件)

能够通过 {$smarty.config.配置变量}
来访谈布署文件中的模板变量。那样的话,在模板中拜候安顿文件中的变量就有二种艺术:一、{#配备变量#};二、{$smarty.config.配置变量},借使有区域来讲,也是那样。

/tpl/index.tpl

<?php
  define('CONST_VAR', 'ABC');
  require 'init.inc.php'; //引入模板初始化文件
  global $_tpl;
  $_str = 'abcdEFGHigklmnOPQRSTuvwsYz'; //定义一个字符串
  $_tpl->assign('str',$_str); //字符串赋值给str
  $_tpl->assign('str1',strtolower($_str)); //字符串全部转换为小写赋给str1
  $_tpl->assign('str2',strtoupper($_str)); //字符串全部转换为大写赋给str2
  $_tpl->assign('str3',ucfirst($_str)); //字符串首字母转换为大写赋给str3
  $_tpl->assign('str4',substr($_str, 0,15).'...'); //截取字符串前15个字符,后面的用'...'代替,并赋给str4
  $_tpl->assign('str5',strtoupper(substr($_str, 0,15)).'...'); //截取字符串前15个字符转换为大写,后面的用'...'代替,并赋给str4
  $_tpl->display('index.tpl'); //引入模板
?>

5、获取 Smarty 内建函数 capture 捕获的数额

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Capture</title>
</head>
<body>
   <!-- 定义capture -->
   <{capture name="foo"}>
     这里是 capture 函数里面的内容,默认是不显示的。
   <{/capture}>
   <!-- 调用capture,使用的是 Smarty 中的保留变量{$smarty.capture} -->
   <{$smarty.capture.foo}>
</body>
</html>

tpl/index.tpl

capture函数的机能是捕获模板输出的数码并将其积累到三个变量里,并非把它们输出到页面,任何在
{capture
name=”foo”}和{/capture}之间的多寡将被寄存到变量$foo中,该变量由name属性内定。在模板中通过
$smarty.capture.foo 访问该变量,若无一点名 name 属性,函数暗中认可将使用
“default” 作为参数。

2、config_load

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Smarty 中的变量调解器</title>
</head>
<body>
  <{$str}><br />   <!-- 输出字符串原形 -->
  <{$str1}><br />  <!-- 输出字符串转换为小写-->
  <{$str2}><br />  <!-- 输出字符串转换为大写 -->
  <{$str3}><br />  <!-- 输出字符串首字母大写 -->
  <{$str4}><br />  <!-- 截取字符串,截取15个字符串,后面的用'...'代替 -->
  <{$str5}><br />  <!-- 截取字符串,截取15个字符串,转换为大写,后面的用'...'代替 -->
  <!--
    您会发现,使用赋值过来的变量,使用起来不是很灵活,
    如果需要处理字符串,就必须得在主文件中设立一个新变量,并把值赋给这个新变量。
    使用变量调解器,可灵活的处理字符串
   -->
  <{$str|transform}><br />      <!-- 输出字符串原形-->
  <{$str|transform:"lower"}><br />  <!-- 输出字符串转换为小写-->
  <{$str|transform:"upper"}><br />  <!-- 输出字符串转换为大写 -->
  <{$str|transform:"firstdx"}><br /> <!-- 输出字符串首字母大写 -->
  <{$str|subString:0:15:"###"}><br /> <!-- 截取字符串,截取15个字符串,后面的用'###'代替 -->
  <{$str|subString:0:15:"@@@"|transform:"upper"}><br />  <!-- 截取字符串,截取15个字符串,后面的用'@@@'代替 -->
  <{$str|transform:"upper"|subString:0:15:"@@@"}><br />  <!-- 功能同上 -->
</body>
</html>

6、保留变量 $smarty.foreach

属性 类型 是否必须 缺省值 描述
file string Yes n/a 待包含的配置文件的名称
section string No n/a 配置文件中待加载部分的名称
scope string no local 加载数据的作用域,取值必须为local, parent 或 global. local 说明该变量的作用域为当前模板. parent 说明该变量的作用域为当前模板和当前模板的父模板(调用当前模板的模板). global 说明该变量的作用域为所有模板.
global boolean No No 说明加载的变量是否全局可见,等同于 scope=parent. 注意: 当指定了 scope 属性时,可以设置该属性,但模板忽略该属性值而以 scope 属性为准。

/libs/plugins/modifier.transform.php(转变文件调度器)

$smarty.foreach 获取 foreach
循环数组的一些音讯,比方数组的个数、递增+1……,关于 $smarty.foreach
的使用,详细内容可参看后面一篇《PHP模板引擎斯马特y内建函数foreach,foreachelse用法分析》

config_load 函数用于从铺排文件中加载变量,关于 config_load
函数的应用,可参看前边一篇《PHP模板引擎Smarty之安排文件在模板变量中的使用方法亲自去做》。

<?php
  /**
   * smarty_modifier_transform
   * 字符串转换的变量调解器函数
   * @param string $string 处理字符串
   * @param string $type  处理类型
   */
  function smarty_modifier_transform($string,$type) {
    switch ($type) {
      case 'upper' :
        $str = strtoupper($string);
        break;
      case 'lower' :
        $str = strtolower($string);
        break;
      case 'firstdx' :
        $str = ucfirst($string);
        break;
      default:
        $str = $string;
    }
    return $str;
  }
?>

越多关于PHP相关内容感兴趣的读者可查看本站专题:《smarty模板入门基础教程》、《PHP模板本领计算》、《PHP基于pdo操作数据库技艺总计》、《PHP运算与运算符用法总结》、《PHP互联网编制程序手艺总计》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总计》、《php+mysql数据库操作入门教程》及《php常见数据库操作才具汇总》

3、include

lib/plugins/modifier.subString.php(截取文本调治器)

瞩望本文所述对大家基于smarty模板的PHP程序设计有着帮助。

属性 类型 是否必须 缺省值 描述
file string Yes n/a 待包含的模板文件名
assign string No n/a 该属性指定一个变量保存待包含模板的输出
[var …] [var type] No n/a 传递给待包含模板的本地参数,只在待包含模板中有效
<?php
  /**
   * smarty_modifier_subString
   * 处理截取字符串调解器
   * @param string $string  处理字符串
   * @param int $start_num  开始位置,默认从头开始
   * @param int $end_num   结束位置,默认20
   * @param string $addTo   追加字符串,默认'...'
   */
  function smarty_modifier_subString($string,$start_num=0,$end_num=20,$addTo='...') {
    $_str = '';
    if (strlen(substr($string, $start_num, $end_num))>=$end_num) {
      $_str = substr($string, $start_num, $end_num).$addTo;
    } else {
      $_str = substr($string, $start_num, $end_num);
    }
    return $_str;
  }
?>

你只怕感兴趣的篇章:

  • ThinkPHP模板中数组循环实例
  • ThinkPHP模板Volist标签嵌套循环输出多维数组的点子
  • ThinkPHP模板之变量输出、自定义函数与推断语句用法
  • PHP 替换模板变量完毕步骤
  • PHP模板引擎斯马特y中变量的利用方法身体力行
  • PHP模板引擎斯马特y之配备文件在模板变量中的使用办法亲自过问
  • PHP模板引擎Smarty自定义变量调度器用法
  • PHP模板引擎Smarty内置变量调度器用法详解
  • thinkPHP调整器变量在模板中的呈现格局现身说法
  • PHP自定义函数完成assign()数组分配到模板及extract()变量分配到模板成效示例

include 函数用于在现阶段模板中涵盖其余模板,
当前模板中的变量在被含有的沙盘中可用. 必须钦赐 file
属性,该属性指明模板财富的岗位。要是设置了 assign
属性,该属性对应的变量名用于保存待蕴含模板的出口,那样待包罗模板的输出就不会直接显示了。请看上边包车型地铁亲自过问:

推行结果:

/tpl/index.tpl

图片 1

{include file="header.tpl"}
{* body of template goes here *}
{include file="footer.tpl"}

通过上面的实例,注解调度器文件必须放在 斯马特y 的插件目录 plugins
下,並且命名必须比照 Smarty
的准则,那样,本领调用到您编写的调整器函数。还恐怕有一点亟需表明,定义的函数名称也亟须符合
斯Matty
钦赐的命名法规,比如:smarty_modifier_XXX,况兼三个调度器文件,只可以放二个函数,不能够放置五个。

4、if,elseif,else

好了,自定义调节器先介绍到此处, Smarty
中有大多曾经写的调治器函数,能够拿来直接调用或涂改成您本身喜欢的风骨。关于
Smary 内置的调度器,后续章节会有详尽介绍。

斯马特y 中的 if 语句和 php 中的 if
语句一样灵敏易用,并追加了多少个特色以适合模板引擎. if 必须于 /if
成对出现. 能够行使 else 和 elseif 子句。

越来越多关于PHP相关内容感兴趣的读者可查看本站专项论题:《smarty模板入门基础教程》、《PHP模板能力总括》、《PHP基于pdo操作数据库本事计算》、《PHP运算与运算符用法计算》、《PHP网络编程技巧总计》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总计》、《php+mysql数据库操作入门教程》及《php常见数据库操作技能汇总》

能够采纳以下原则修饰词:eq、ne、neq、gt、lt、lte、le、gte、ge、is
even、is odd、is not even、is not odd、not、mod、div by、even by、odd
by、==、!=、>、<、<=、>=.
使用那么些修饰词时必须和变量或常量用空格格开。

盼望本文所述对大家基于smarty模板的PHP程序设计具备支持。

上面临这个修饰符表示的意趣举办求证:

您可能感兴趣的文章:

  • ThinkPHP模板中数组循环实例
  • ThinkPHP模板Volist标签嵌套循环输出多维数组的不二法门
  • ThinkPHP模板之变量输出、自定义函数与决断语句用法
  • PHP 替换模板变量完结步骤
  • PHP模板引擎斯马特y中变量的运用办法身体力行
  • PHP模板引擎斯马特y之布署文件在模板变量中的使用情势亲自过问
  • PHP模板引擎斯马特y中的保留变量用法深入分析
  • PHP模板引擎斯马特y内置变量调整器用法详解
  • thinkPHP调控器变量在模板中的显示情势自己要作为表率服从规则
  • PHP自定义函数完毕assign()数组分配到模板及extract()变量分配到模板作用示例
条件修饰符 作用描述
eq ==
ne !=
neq !=
gt >
lt <
lte <=
le <=
gte >=
ge >=
is even 是否偶数
is odd 是否奇数
is not even 是否不是偶数
is not odd    是否不是奇数
not !=
mod 求模
div by 是否能被整除
even by 商是否是偶数
odd by 商是否是奇数
&&
||
() 括号改变优先级

5、ldelim 和 rdelim

用于出口分隔符,也正是大括号 “{” 和 “}”.
模板引擎总是尝试解释大括号内的源委,因而只要急需输出大括号,请使用此方法。请看下边包车型大巴示范:

/tpl/index.tpl

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ldelim 和 rdelim</title>
</head>
<body>
  <{ldelim}>funcname<{rdelim}> 是 Smarty 中的一个函数。
  <!-- 执行结果: <{funcname}> 是 Smarty 中的一个函数。 -->
</body>
</html>

6、literal

literal
标签区域内的多寡将被看作文本管理,此时模板将忽略在那之中间的有着字符新闻.
该性情用于体现存相当的大希望带有大括号等字符音讯的 javascript 脚本.
当这几个音讯处于 {literal}{/literal}
标签中时,模板引擎将不剖析它们,而一向显示,其实遵照作者的全数例子中的标签风格(因为在
init.inc.php 初阶化文件中一度再也设置了左定界符和右定界符),而不是斯马特y
的默许风格,基本上不会发生这种场地。关于该函数的运用,请看下边包车型地铁自己要作为模范服从规则

/tpl/index.tpl

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>literal</title>
</head>
<body>
  <{literal}>
  <script language=javascript>
     <!--
       window.alert(new Date());
     -->
  </script>
  <{/literal}>
</body>
</html>

7、php

php 标签允许在模板中央直属机关接嵌入 php 脚本,此标签会把标签内部的故事情节当成 PHP
脚本实行深入分析施行。请看下边包车型大巴躬体力行

/tpl/index.tpl

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>php</title>
</head>
<body>
  <{php}>
    echo date("Y-m-d H:i:s");
  <{/php}>
  <!-- 执行结果: 2011-10-24 04:35:03 -->
</body>
</html>

8、strip

Web
开拓者多次相见空格和回车影响HTML输出的场地,为了得到一定的结果,因而你只好在模板里运营具有的标签.
平时在难以知晓或不便管理的模板中相遇此主题素材。Smarty
在体现前将除区任何投身 {strip}{/strip} 标识中数据的原原本本的经过空格和回车.
那样可以确认保证模板轻便领悟且毫无操心剩下的空格导致难题。

好了, 斯马特y
模板引擎中的内建函数先计算这么多,关于内建函数中八个最重大的函数(foreach,foreachelse、section,sectionelse)的施用,可参看前边一篇《PHP模板引擎Smarty内建函数foreach,foreachelse用法深入分析》

越来越多关于PHP相关内容感兴趣的读者可查阅本站专项论题:《smarty模板入门基础教程》、《PHP模板能力总计》、《PHP基于pdo操作数据库技巧总计》、《PHP运算与运算符用法计算》、《PHP互连网编制程序本事总计》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总计》、《php+mysql数据库操作入门教程》及《php常见数据库操作本领汇总》

期待本文所述对我们基于smarty模板的PHP程序设计有着帮忙。

你大概感兴趣的稿子:

  • smarty模板引擎中自定义函数的主意
  • smarty自定义函数htmlcheckboxes用法实例
  • PHP模板引擎斯马特y自定义变量调度器用法
  • 斯Matty使用自定义资源的法子
  • smarty+adodb+部分自定义类的php开辟形式
  • PHP模板引擎斯马特y内建函数section,sectionelse用法详解
  • smarty内部日期函数html_select_date()用法实例分析
  • smarty模板引擎中内建函数if、elseif和else的施用情势
  • smarty模板引擎使用内建函数foreach循环抽取全体数组值的主意
  • 在smarty中调用php内置函数的措施
  • smarty自定义函数用法示例

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website