最近使用Thinkphp開發又發現一個比較好的技巧,在模板中可以使用自己定義的函數,像字符串截取、時間格式化等等方面相當有用。
結合自己的開發,給大家舉個簡單的例子。我的函數是時間人性化,比如可以把一個日期轉化為“5分鍾前”之類的顯示方式,讓用戶方便地看清除時間。
做的這些,我們只需要做以下兩步工作:
一、寫自定義函數
1、在項目的Common目錄下新建common.php文件
2、在該文件中寫自己的函數,函數的寫法跟普通PHP定義函數的方法是一樣的,只是函數名個人建議不要寫的太簡單,跟系統的函數沖突了就不講會不會出問題。我的函數舉例:
function timeFormat($time){
$newtime = '';
$dis = time()-$time;
if($dis < 3600){ //一個小時以內
$newtime = intval($dis/60).'分鍾前';
}elseif($dis >= 3600 && $dis < (24*3600)){ //大於一個小時,小於一天
$newtime = intval($dis/3600).'小時前';
}else{
$newtime = date("Y-m-d H:i",$time);
}
return $newtime;
}
二、模板中調用
調用很簡單,只需要在變量后面加“|”符,然后跟着函數,和其他的thinkPHP模板中調用函數一樣。實例:{$info.addtime|timeFormat=###},說明:info數組變量中addtime元素為時間戳,經過函數處理后就返回格式化后的字符串了,如果addtime和現在時間差距在1個小時以內就好顯示為類似“5分鍾前”的字符串,如果大於1個小時小於1天,就會顯示類似“4個小時前”,如果大於一天則顯示格式化后的日期字符串,如“2014-6-26 15:34”。
還有一個好處是thinkPHP還支持函數的連貫操作,例如{$info.addtime|date="Y-m-d H:i",###|dateFormat=###},具體的大家去嘗試吧!
