一、写自定义函数

      1、在项目的Common目录下新建common.php文件

      2、在该文件中写自己的函数,函数的写法跟普通PHP定义函数的方法是一样的,只是函数名个人建议不要写的太简单,跟系统的函数冲突了就不讲会不会出问题。我的函数举例:

  function lock_url($txt,$key){
$txt = $txt.$key;
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
$nh = rand(0,64);
$ch = $chars[$nh];
$mdKey = md5($key.$ch);
$mdKey = substr($mdKey,$nh%8, $nh%8+7);
$txt = base64_encode($txt);
$tmp = '';
$i=0;$j=0;$k = 0;
for ($i=0; $i<strlen($txt); $i++) {
$k = $k == strlen($mdKey) ? 0 : $k;
$j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;
$tmp .= $chars[$j];
}
return urlencode(base64_encode($ch.$tmp));
}

二、模板中调用

例子:<a href="{:url('index/'.$controller)}?id={$rsp.pid|raw|timeFormat='id'}"

TP5默认使用htmlspecialchars ,如果你不需要转义加raw

 

      调用很简单,只需要在变量后面加“|”符,然后跟着函数,和其他的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=###},具体的大家去尝试吧!

 

官方:​​https://www.kancloud.cn/manual/thinkphp5_1/354074​