日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Smarty2至Smarty3升级指南

發(fā)布時(shí)間:2024/4/17 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Smarty2至Smarty3升级指南 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Smarty2和Smarty3在實(shí)現(xiàn)上差不多,但是在smarty2升級(jí)到smarty3的時(shí)候還是要注意些許不同。
下面是已知的和smarty2不兼容的地方

?

== 語(yǔ)法 ==

Smarty 3 API有些方面進(jìn)行了更新。一些Smarty 2 API調(diào)用需要更新以便符合Smarty 3。你可能會(huì)得到提示,推薦你使用新的語(yǔ)法。可以查看Smarty 3附帶的 README 文件獲得更多信息。
} 語(yǔ)法總是讓人迷惑,加上@符號(hào)說(shuō)明修飾符作用于數(shù)組而不是作用于數(shù)組的每個(gè)元素。通常你總是想讓這個(gè)修飾符作用于這個(gè)變量而不必考慮它的類(lèi)型。在 Smarty 3中,{$array|mod} 和?}
是等同的。去掉@符號(hào),修飾符仍然作用于數(shù)組。如果你想修飾符作用于數(shù)據(jù)元素,你必須在模板中循環(huán)數(shù)組,或者使用自定義修飾符以支持?jǐn)?shù)組遍歷。
大多smrty函數(shù)已經(jīng)在需要的地方例如{html_options}進(jìn)行了轉(zhuǎn)義。

?

== PHP版本 ==

Smarty 3 僅支持PHP 5. 在PHP 4將不能正常工作。

?

== {php} 標(biāo)記 ==
Smarty 3 默認(rèn)關(guān)閉 {php} 標(biāo)記支持,不推薦使用。你可以通過(guò)設(shè)置$smarty->allow_php_tag=true來(lái)啟用。

{php} 塊中的變量不再與同一頁(yè)中的其它{php}塊共享作用域,因此在使用的時(shí)候要注意。

?

== 定界符和空格 ==
Smarty 定界符 {} 有空格包圍是不再認(rèn)為是Smarty標(biāo)記。因此,{ foo } 將被Smarty忽略,但是 {foo} 將被識(shí)別。這個(gè)變化使得 Javascript/CSS更容易在smarty中使用,而沒(méi)有必要使用 {literal}.
這個(gè)特性可以通過(guò)設(shè)置 $smarty->auto_literal = false; 禁用。

?

== 未用引號(hào)的字符串 ==
Smarty 2 對(duì)于參數(shù)中未用引號(hào)括起來(lái)的字符串有點(diǎn)寬容(并且模棱兩可)。Smarty 3 比較嚴(yán)格。對(duì)于不包含特殊字符(A-Za-z0-9_之外的字符)的字符串仍然可以不用引號(hào)括起來(lái)。

比如下面例子中文件名就必須用引號(hào)括起來(lái)。

?

view plain {assign?var=foo?value=baz}?<--?works?ok??{include?file="path/foo.tpl"}?<--?needs?quotes!??

?

== 擴(kuò)展Smarty類(lèi) ==
Smarty 3 遵循PHP5標(biāo)準(zhǔn)構(gòu)造規(guī)則。擴(kuò)展Smarty類(lèi)的時(shí)候,使用 __construct() 作為類(lèi)的構(gòu)造函數(shù)的名稱(chēng)。如果你實(shí)現(xiàn)自己的構(gòu)造函數(shù),一定要先調(diào)用 parent::__construct()

?

view plain class?MySmarty?extends?Smarty?{??function?__construct()?{??parent::__construct();??//?your?initialization?code?goes?here??}??}??

?

?

== 自動(dòng)加載器 ==
Smarty 用spl_autoload_register函數(shù) 實(shí)現(xiàn)了它自己的自動(dòng)加載器。如果想在自己的應(yīng)用中使用自動(dòng)加載器,就必須使用此方法注冊(cè)。
使用 __autoload() 將失敗。 這是PHP5標(biāo)準(zhǔn)自動(dòng)加載函數(shù)。可以查看
http://us3.php.net/manual/en/function.spl-autoload-register.php

== 插件文件名 ==
自從Smarty 3使用默認(rèn)的spl自動(dòng)加載器,就要求插件文件名使用小寫(xiě)字母。Smarty 2 允許使用大小寫(xiě)混合插件名,你必須重命名以用于smarty 3.

?

== Smarty特殊變量作用域 ==
在Smarty 2中Smarty特殊變量 $smarty.section.* and $smarty.foreach.*
擁有全局作用域。如果子模板中含有同名的循環(huán),就會(huì)覆蓋父模板中的值。

在Smarty 3中這些特殊變量將只作用于定義循環(huán)所在的模板。若是需要在子模板中使用,就不得不使用參數(shù)傳遞。
<source lang="smarty">
{include file="path/foo.tpl" index=$smarty.section.foo.index}
</source>

== SMARTY_RESOURCE_CHAR_SET ==
Smarty 3 設(shè)置常量 SMARTY_RESOURCE_CHAR_SET 為 utf-8作為模版文件的默認(rèn)字符集.?
只是作為像 escape 等函數(shù)的默認(rèn)字符集. 如果你的模板使用其它字符集, 就必須自己定義這個(gè)常量.

== trigger_error()
API 函數(shù) trigger_error() 已被移除。

?

== Smarty 常量 ==
下面這些常量?
SMARTY_PHP_PASSTHRU
SMARTY_PHP_QUOTE
SMARTY_PHP_REMOVE
SMARTY_PHP_ALLOW
已被類(lèi)常量替代
Smarty::PHP_PASSTHRU
Smarty::PHP_QUOTE
Smarty::PHP_REMOVE
Smarty::PHP_ALLOW

?

轉(zhuǎn)載于:https://www.cnblogs.com/chyong168/archive/2011/11/20/2256076.html

總結(jié)

以上是生活随笔為你收集整理的Smarty2至Smarty3升级指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。