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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Smarty2至Smarty3升级指南

發布時間:2024/4/17 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Smarty2至Smarty3升级指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

?

== 語法 ==

Smarty 3 API有些方面進行了更新。一些Smarty 2 API調用需要更新以便符合Smarty 3。你可能會得到提示,推薦你使用新的語法。可以查看Smarty 3附帶的 README 文件獲得更多信息。
} 語法總是讓人迷惑,加上@符號說明修飾符作用于數組而不是作用于數組的每個元素。通常你總是想讓這個修飾符作用于這個變量而不必考慮它的類型。在 Smarty 3中,{$array|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_之外的字符)的字符串仍然可以不用引號括起來。

比如下面例子中文件名就必須用引號括起來。

?

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

?

== 擴展Smarty類 ==
Smarty 3 遵循PHP5標準構造規則。擴展Smarty類的時候,使用 __construct() 作為類的構造函數的名稱。如果你實現自己的構造函數,一定要先調用 parent::__construct()

?

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

?

?

== 自動加載器 ==
Smarty 用spl_autoload_register函數 實現了它自己的自動加載器。如果想在自己的應用中使用自動加載器,就必須使用此方法注冊。
使用 __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中這些特殊變量將只作用于定義循環所在的模板。若是需要在子模板中使用,就不得不使用參數傳遞。
<source lang="smarty">
{include file="path/foo.tpl" index=$smarty.section.foo.index}
</source>

== 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

?

轉載于:https://www.cnblogs.com/chyong168/archive/2011/11/20/2256076.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。