php函數(shù)原型: echo functionName('param1','param2','param3'); 實例: " /> 国产精品亚洲第一区二区三区,成人在免费视频手机观看网站,国产精品视频一区二区猎奇

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

在smarty中調(diào)用php內(nèi)置函數(shù)的方法

相信有很多朋友還不知道,可以在smarty模板里調(diào)用php的內(nèi)置函數(shù),我們一起來看看它的用法。

模板書寫:
{'param1'|functionName:'param2':'param3'}

php函數(shù)原型:
echo functionName('param1','param2','param3');
實例:
{'1234567'|substr:'1':'2'}

下面這個和函數(shù)的參數(shù)順序有關系

{'a'|str_replace:'A':'abcd'}

直接延伸到,直接在php中寫一個函數(shù)調(diào)用,不需要注冊修改器的.

更深一步的研究:發(fā)現(xiàn)數(shù)組會出錯.

分配了一個數(shù)組array給Smarty,假設Smarty的分界符為'{' 和'}'。

在很多資料上都看到,在Smarty中要求數(shù)組的長度時,可以用在數(shù)組后便加|count的方法調(diào)用。即通過{array|count}獲得 array的長度。但是今天在寫模板時,發(fā)現(xiàn)這樣得不到數(shù)組的長度,而只是得到一個返回的字符串Array。也就是說僅僅是返回了{array}的結果, 而沒有返回其array的長度。
查看smarty/plugins文件夾,發(fā)現(xiàn)并沒有count的相關方法,也就是說,count是直接調(diào)用了php中的方法。

后來通過網(wǎng)絡上的資料,發(fā)現(xiàn)可以在count前面加@,從而正確的獲取數(shù)組的長度。再進一步查看Smarty的源碼,發(fā)現(xiàn)Smarty對屬性調(diào)節(jié)器后邊的 方法名進行處理時,會對前邊加@的進行特殊處理。因此作出判斷:在Smarty中的屬性調(diào)節(jié)器中調(diào)用php中定義好的函數(shù)時,可以通過加@來表示。
1、對類型為數(shù)組的方法進行測試時,發(fā)現(xiàn)不加@符號都會出錯。比如:要對一個數(shù)組調(diào)用count方法求出數(shù)組的長度,就可以這樣調(diào)用{array|@count},而要對數(shù)組調(diào)用end方法得出數(shù)組的最后一組數(shù)據(jù)時,則可以通過{array|@end}。
2、在對字符串的相關函數(shù)進行測試,發(fā)現(xiàn)加不加@都可以正常的調(diào)用。
3、其他的尚未認真測試。

對于在smarty中調(diào)用復雜的php函數(shù)不予鼓勵,因為Smarty的本意就是要實現(xiàn)代碼和模板分離,不要偏離了人家的設計初衷。

模板書寫:
{'param1'|functionName:'param2':'param3'}

php函數(shù)原型:
echo functionName('param1','param2','param3');

實例:
{'1234567'|substr:'1':'2'}
下面這個比較怪 和函數(shù)的參數(shù)順序有關系
{'a'|str_replace:'A':'abcd'}

Smarty調(diào)用自定義函數(shù)
調(diào)用自定義函數(shù)需要用到register_function() 來注冊
這里為大家舉個例子,常見的字符串切割

函數(shù)如下
復制代碼 代碼如下:
<?php
function SmartyLen($params){
extract($params);
$len=strlen($text);
$max=$length;
for   ($i=0;$i<$length;$i++){
           $chr=substr($text,$i,1);
           if(ord($chr)>0x80)//字符是中文
           {
               $length++;
               $i++;
      $len--;
            }
}
$str=substr($text,0,$length);
if($len>$max)$str.="...";
Return $str;
}

注冊函數(shù)
$smarty->register_function('len',"SmartyLen");

模板調(diào)用
{len text="測試下" length="1"} //注意這里的text和length其實是函數(shù)里的2個參數(shù)函數(shù)的參數(shù)必須要以函數(shù)內(nèi)部變量名一致,其實傳回去的的是個數(shù)組,在函數(shù)里用extract($params);把數(shù)組中的變量導入到當前的符號表。

php技術在smarty中調(diào)用php內(nèi)置函數(shù)的方法,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产最新精品亚洲2021不卡 | 亚洲AV综合99一二三四区 | 久久99国产精品二区不卡 | 91久久精品一区二区三区 | 丰满少妇发泄14p | 儿子好妈妈的HD3中字抢劫 | 中国拍三a级的明星女 | 久久两性视频 | 单亲妈妈3韩国电影免费观看 | 国产成人精品123区免费视频 | 黄 色 网 站 免 费 涩涩屋 | GOGOGO高清在线播放韩国 | 中文字幕人成乱码中国 | 久久精品影院永久网址 | 色综合色综合久久综合频道 | 伊人久久青青草 | 国拍自产精品福利区 | 国产精品AV无码免费播放 | 2023极品少妇XXXO露脸 | 日韩 亚洲 欧美 中文 高清 | 护士日本ⅹxxx丰满hd | 秋霞伦理电影在2017韩国在线伦 | 国产成人精品视频播放 | 麻豆AV蜜桃AV久久 | ppypp午夜限制不卡影院私人 | 四虎永久在线精品国产免费 | 大中国免费视频大全在线观看 | 亚欧洲乱码视频一二三区 | 亚洲精品无码久久久久A片空 | 亚洲黄色三级视频 | 日韩欧美一区二区三区免费看 | 午夜国产精品视频在线 | 亚洲精品视频在线观看免费 | 污污又黄又爽免费的网站 | 扒开女人下面使劲桶视频 | 亚洲A片不卡无码久久尤物 亚洲a免费 | 女人高潮被爽到呻吟在线观看 | 国产精品无码久久av | 久草在线一免费新视频 | 亚洲精品久久无码AV片银杏 | 忘忧草研究所 麻豆 |