探討Smarty中如何擷取數組的長度以及smarty調用php函數的詳解_php技巧

來源:互聯網
上載者:User

Smarty中如何擷取數組的長度
前提假設:
分配了一個數組array給Smarty,假設Smarty的分界符為'{' 和'}'。
在很多資料上都看到,在Smarty中要求數組的長度時,可以用在數組後便加|count的方法調用。即通過{array|count}獲得array的長度。但是今天在寫模板時,發現這樣得不到數組的長度,而只是得到一個返回的字串Array。也就是說僅僅是返回了{array}的結果,而沒有返回其array的長度。

查看smarty\plugins檔案夾,發現並沒有count的相關方法,也就是說,count是直接調用了php中的方法。
後來通過網路上的資料,發現可以在count前面加@,從而正確的擷取數組的長度。再進一步查看Smarty的源碼,發現Smarty對屬性調節器後邊的方法名進行處理時,會對前邊加@的進行特殊處理。因此作出判斷:在Smarty中的屬性調節器中調用php中定義好的函數時,可以通過加@來表示。

1、對類型為數組的方法進行測試時,發現不加@符號都會出錯。比如:要對一個數組調用count方法求出數組的長度,就可以這樣調用{array|@count},而要對數組調用end方法得出數組的最後一組資料時,則可以通過{array|@end}。
2、在對字串的相關函數進行測試,發現加不加@都可以正常的調用。
3、其他的尚未認真測試。對於在smarty中調用複雜的php函數不予鼓勵,因為Smarty的本意就是要實現代碼和模板分離,應該認定模板就是介面設計的人員用的,如果過多地加複雜邏輯,對他們來說就是一種折磨了。


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.