php函數(shù)原型: echo functionName('param1','param2','param3'); 實(shí)例: " /> 亚洲欧美一区二区成人片,日韩午夜欧美精品一二三四区,亚洲欧美日韩一级特黄在线

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

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

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

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

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

下面這個(gè)和函數(shù)的參數(shù)順序有關(guān)系

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

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

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

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

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

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

對(duì)于在smarty中調(diào)用復(fù)雜的php函數(shù)不予鼓勵(lì),因?yàn)镾marty的本意就是要實(shí)現(xiàn)代碼和模板分離,不要偏離了人家的設(shè)計(jì)初衷。

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

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

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

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

函數(shù)如下
復(fù)制代碼 代碼如下:
<?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;
}

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

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

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

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

主站蜘蛛池模板: 伊人久久精品99热超碰 | 污文乖不疼的 | 国产午夜理论片YY8840Y | 中文无码字慕在线观看 | 无人视频在线观看免费播放影院 | 穿白丝袜边走边尿白丝袜 | 国产精品观看视频免费完整版 | 被六个男人躁到一夜同性 | 巨黄的肉辣文np | 无码中文字幕热热久久 | 久久a级片 | 欲乱艳荡少寡妇全文免费 | GAY2022空少被体育生暴菊 | 亚洲成av人影院 | 欧美日韩888在线观看 | 御姐被吸奶 | 精品国产99久久久久久麻豆 | 国产成人一区二区三区在线观看 | 欧美一区二区视频97色伦 | 亚洲日韩中文字幕区 | 海角国精产品一区一区三区糖心 | XXX国产麻豆HD | 久久高清内射无套 | 99在线这精品视频 | 亚洲精品在线网址 | 国产三级级在线电影 | 亚洲国产中文在线视频免费 | 久久久久综合网久久 | 五月丁香婷姐色 | 看全色黄大色大片免费久黄久 | 一扒二脱三插片在线观看 | 亚洲日韩视频免费观看 | 91亚洲 欧美 国产 制服 动漫 | 国产亚洲精品高清视频免费 | 国产成人在线播放视频 | 色多多污污在线播放免费 | 亚洲狠狠网站色噜噜 | 国产精品成人啪精品视频免费观看 | 我的奶头被客人吸的又肿又红 | 97综合久久 | 2018高清国产一区二区三区 |