首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Smart 字串串接技巧:cat 修飾符與 assign 方法完整比較

     編輯:PHP 綜合知識

核心方法:cat 修飾符

|cat: 是 Smarty 內建最簡潔的字串串接方式,語法:

{$var1|cat:$var2|cat:$var3}

實戰範例:雙層迴圈生成圖片路徑

{foreach item=i from=$abc}
    {foreach item=j from=$def}
        <img src="{$i.floder|cat:'130_'|cat:$j.picname}" />
    {/foreach}
{/foreach}

解析:

  1. $i.floder 如 upload/
  2. |cat:'130_' 接上固定字串 → upload/130_
  3. |cat:$j.picname 再接檔名 → upload/130_photo.jpg

傳統 assign 串接法

{assign var=imgPath value=$i.floder}
{assign var=imgPath value=$imgPath|cat:'130_'}
{assign var=imgPath value=$imgPath|cat:$j.picname}
<img src="{$imgPath}" />

缺點:語句冗長、變數污染作用域、可讀性差。

cat 修飾符進階用法

串接多個變數

{$prefix|cat:$id|cat:'_'|cat:$suffix|cat:'.jpg'}

搭配其他修飾符

{$name|lower|cat:'_'|cat:$id|cat:'@example.com'}

條件串接

{$baseUrl|cat:($useSsl ? 's' : '')|cat:'://example.com'}

何時仍需使用 assign?

場景建議做法
需在多處重用串接結果{assign var=fullPath value=$a|cat:$b} 後重複使用 {$fullPath}
串接邏輯極其複雜(含判斷、迴圈)PHP 端預處理完成再傳入模板
需對串接結果進行進一步運算assign 存入變數再操作

效能與最佳實踐

  1. 簡單串接首選 |cat::單一表達式、無副作用、編譯後為單一 PHP 串接操作
  2. 避免過度串接:超過 5-6 個 |cat: 串連時,考慮 PHP 端 implode() 或 sprintf() 預處理
  3. 常量字串用單引號:|cat:'_fixed_' 而非雙引號,避免不必要的變數解析
  4. 編譯快取:Smarty 編譯後 |cat: 直接轉為 PHP . 運算子,零額外開銷

常見錯誤

{* 錯誤:管道符前後有空格 *}
{$a |cat: $b}        {* 輸出字面文字 *}
{$a|cat :$b}         {* 語法錯誤 *}

{* 正確 *}
{$a|cat:$b}
{$a|cat:'_'|cat:$b}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved