Smarty2和Smarty3在告终上差不多,然而在smarty2升级到smarty3的时候还是要当心些许不同。
下面是已知的和smarty2不接受的地方
== 语法 ==
Smarty 3 API有些方面举行了更新。一些Smarty 2 API调用必需更新以便相称Smarty
3。你可能会获得提醒,评比你利用新的语法。能够察看Smarty 3附带的 README 文件获得更多消息。
{$array|@mod}
语法总是让人迷惑,加上@符号解释修饰符作用于数组而不是作用于数组的每个元素。等闲你总是想让这个修饰符作用于这个变量而无须琢磨它的种类。在
Smarty 3中,{$array|mod} 和 {$smary|@mod}
是雷同的。去掉@符号,修饰符依旧作用于数组。万一你想修饰符作用于数据元素,你定然在模板中循环数组,可能利用自定义修饰符以扶持数组遍历。
大多smrty函数曾经在必需的地方例如{html_options}举行了转义。
== PHP版本 ==
Smarty 3 仅扶持PHP 5. 在PHP 4将不能正常工作。
== {php} 符号 ==
Smarty 3 默认关闭 {php}
符号扶持,不评比利用。你能够穿越设置$smarty->allow_php_tag=true来启用。
{php} 块中的变量不再与统一页中的其它{php}块分享作用域,因而在利用的时候要当心。
== 定界符和空格 ==
Smarty 定界符 {} 有空格包围是不再感受是Smarty符号。因而,{ foo } 将被Smarty疏忽,然而 {foo}
将被分辨。这个改变使得 Javascript/CSS更轻率在smarty中利用,而未曾必需利用 {literal}.
这个个性能够穿越设置 $smarty->auto_literal = false; 禁用。
== 未用引号的字符串 ==
Smarty 2 对于参数中未用引号括起来的字符串有点开恩(并且模棱两可)。Smarty 3
比拟严厉。对于不包括特异字符(A-Za-z0-9_之外的字符)的字符串依旧能够无须引号括起来。
例如下面例子中文件名就定然用引号括起来。
{assign var=foo value=baz}
== 伸展Smarty类 ==
Smarty 3 顺从PHP5规范构造法定。伸展Smarty类的时候yu.yuanem.com,利用 __construct()
作为类的构造函数的名目。万一你告终自己的构造函数,定然要先调用 parent::__construct()
class MySmarty extends Smarty { function __construct() { parent::__construct(); // your initialization code goes here }}
== 积极加载器 ==
Smarty 用spl_autoload_register函数
告终了它自己的积极加载器。万一想在自己的利用中利用积极加载器www.hirain.cn,1,就定然利用此措施登记。
利用 __autoload() 将失利。 这是PHP5规范积极加载函数。能够察看
http://us3.php.net/manual/en/function.spl-autoload-register.php
== 插件文件名 ==
自从Smarty 3利用默认的spl积极加载器,即将求插件文件名利用小写字母。Smarty 2
批准利用大小写混杂插件名,你定然重命名以用于smarty 3.
== Smarty特异变量作用域 ==
在Smarty 2中Smarty特异变量 $smarty.section.* and $smarty.foreach.*
具有大局作用域。万一子模板中含有同名的循环,就会遮蔽父模板中的值。
在Smarty 3中这些特异变量将只作用于定义循环所在的模板。若是必需在子模板中利用,就不得不利用参数递交。
{include file="path/foo.tpl" index=$smarty.section.foo.index}
== SMARTY_RESOURCE_CHAR_SET ==
Smarty 3 设置常量 SMARTY_RESOURCE_CHAR_SET 为 utf-8作为模?**募哪献址?
只是作为像 escape 等函数的默认字符集. 万一你的模板利用其它字符集, 就定然自己定义这个常量.
== trigger_error()
API 函数 trigger_error() 已被移除。
== Smarty 常量 ==
下面这些常量
SMARTY_PHP_PASSTHRU
SMARTY_PHP_QUOTE
SMARTY_PHP_REMOVE
SMARTY_PHP_ALLOW
已被类常量轮换
Smarty::PHP_PASSTHRU
Smarty::PHP_QUOTE
Smarty::PHP_REMOVE
Smarty::PHP_ALLOW
String s = new String ("Text here");