PHP常用的一些屌炸天的技巧(二)

导读:大部分有两三年工作经验的PHPer,都必定积累了不少在日常开发中使用的小技巧。从前端,接口开发,团队编程规范,模块化和前辈们分享的个人经验中总结出一些小技巧。这些技能都能大大地提高我们日常开发的效率,提升我们的代码质量,更能让你省下了很多看看书,看看博客,找妹子聊聊天的时间。以下是我个人从工作经验中总结的一些编程小技巧,其中可能也会包括一些前辈们分享的经验,如有更好的实现方法,可以留言分享一下您的宝贵经验,在下一次分享或者后续遍中进而补充。

继上一篇接着分享屌炸天的小技巧,哈哈,不用客气,都收下吧!

11.已过去时间计算(如发布的这篇文章已过去2分钟,也可理解为在2分钟之前发布的)

function nicetime($date){

   if(empty($date)) { return "No date provided"; }

   $periods = array("秒", "分钟", "小时", "天", "周", "月", "年", "decade");

   $lengths = array("60","60","24","7","4.35","12","10");

   $now = time();

   $unix_date = $date; // check validity of date

   if($now-$unix_date > 86400*7-1){

       return 'error';

   }

   if(empty($unix_date)) { return "Bad date"; } // is it future date or past date

   if($now > $unix_date) {

       $difference = $now - $unix_date; $tense = "之前";

   } else {

       $difference = $unix_date - $now; $tense = "from now";

   }

   for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {

       $difference /= $lengths[$j];

   }

   $difference = round($difference);

   if($difference != 1) { $periods[$j].=""; }

   return "$difference$periods[$j]{$tense}";

}

12.定义通用报错响应码列表

function getErrorList(){

   return array(

       0=>array("en"=>"Failed", "zh"=>"失败"),

       1=>array("en"=>"Success", "zh"=>"成功"),

       /*

       |--------------------------------------------------------------------------

       | 系统级错误

       |--------------------------------------------------------------------------

       |

       | 系统级错误

       |

       */

       10001=>array("en"=>"System error", "zh"=>"系统错误"),

       10002=>array("en"=>"Service unavailable", "zh"=>"服务暂停"),

       10003=>array("en"=>"Remote service error", "zh"=>"远程服务错误"),

       10004=>array("en"=>"IP limit", "zh"=>"IP限制"),

       10005=>array("en"=>"Param error", "zh"=>"参数错误"),

       10006=>array("en"=>"Illegal request", "zh"=>"非法请求"),

       10007=>array("en"=>"Request api not found", "zh"=>"接口不存在"),

       10008=>array("en"=>"HTTP method error", "zh"=>"请求方式错误"),

       10009=>array("en"=>"Request body length over limit", "zh"=>"请求长度超过限制"),

       10010=>array("en"=>"Invalid user", "zh"=>"不合法的用户"),

       10011=>array("en"=>"User requests out of rate limit", "zh"=>"用户请求频次超过上限"),

       10012=>array("en"=>"Request timeout", "zh"=>"请求超时"),

       /*

       |--------------------------------------------------------------------------

       | 服务级错误

       |--------------------------------------------------------------------------

       |

       | 服务级错误

       | 2[级别]01[模块]01[错误编号]

       |

       */

       //20000 - 20099   Common error    公共错误

       20001=>array("en"=>"Unknown error", "zh"=>"未知错误"),

       20002=>array("en"=>"DB error", "zh"=>"数据库错误"),

       20003=>array("en"=>"Object already exists", "zh"=>"记录已存在"),

       /*

       |--------------------------------------------------------------------------

       |

       |--------------------------------------------------------------------------

       |

       | 业务级错误

       | 3[级别]01[模块]01[错误编号]

       |

       */

   );

}

13. 定义响应数据规范(语言:zh[中文简体]、en[英文],要结合getErrorList())

/**

* @param       int/string  $code 状态码

* @param null   $msg 提示信息

* @param array $data 数据

* 使用:  return responses('10005');  

*  return responses('10005','参数错误',$this->errorMsg());

*  return responses('10005','参数错误',array(),'www.baidu.com');

*        return responses('1','获取数据成功',array(),'',2);

*/

function responses( $code, $msg = NULL, $data = array(), $uri = NULL,$page=false) {

   $code = (int)$code;

   if( null == $msg ) {

       $errList = getErrorList();

       if( !array_key_exists( $code, $errList ) ) {

           return 'key not exist in config';

       }

       $msg = $errList[ $code ][ "zh" ];

   }

   $ret = array(

       'status' => $code,

       'info' => "{$msg}",

   );

   if( NULL != $data ) {

       $ret[ 'data' ] = $data;

   }

   if( NULL != $uri ) {

       $ret[ 'uri' ] = $uri;

   }

   if( NULL != $page ) {

       $ret[ 'pageInfo' ] = $page;

   }

   return $ret;

}

14.获取真实IP地址

function getIp(){

   $onlineip='';

   if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')){

       $onlineip=getenv('HTTP_CLIENT_IP');

   } elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')){

       $onlineip=getenv('HTTP_X_FORWARDED_FOR');

   } elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown')){

       $onlineip=getenv('REMOTE_ADDR');

   } elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){

       $onlineip=$_SERVER['REMOTE_ADDR'];

   }

   return $onlineip;

}

15.单点登录

/**

     * 点单登录

     * @param Cache $cache

     * @param $source

     * @param $key

     * @param $user

     * @return string

     */

    private function getTicketUrl(Cache $cache,$source,$key,$user)

    {

        $ticket = md5(time()+$key);

        $cache::put($ticket, $user, 120);

        $url = $source . '?ticket=' . $ticket;

        return $url;

    }

    16.加密密码

    function encryptPassword($password, $salt){

   $password = strtolower($password);

   $password = sha1($password.$salt);

   return $password;

}

17.打野函数@从小到大排序 

protected function getsort($arr){

$len=count($arr);

for ($i=0; $i < $len-1; $i++) {

for ($j=$i+1; $j < $len ; $j++) { 

if($arr[$i]>$arr[$j]){

$mid=$arr[$i];

$arr[$i]=$arr[$j];

$arr[$j]=$mid;

}

}

}

return $arr;

}

18.获取文件目录中的文件名

protected function getdir($path,$save=false){

$arr=array();

if(is_dir($path)){


$path=str_replace('\\', '/', $path);

$path=rtrim($path,'/');


$dir = opendir($path);

$ar=array('.','..');

while(($file=readdir($dir))!==false){

if(!in_array($file,$ar)){

if($save){

$save=rtrim($save,'/');

//$save=ltrim($save,'/');

$arr[]=$save.'/'.$file;

}else{

$arr[]=$file;

}

}

}

closedir($dir);

}

return $arr;

}

19. 时间戳解析今日描红

/**

* @param  array  $str 时间戳

*/

function todayTime($str) {

//今日

$today = date('y/m/d');

//时间戳y/m/d

$newtoday = date('y/m/d', $str);

//数据类型检测

if ($today == $newtoday) {

return "<font color='red'>" . date('y/m/d H:i:s', $str) . "</font>";

} else {

return date('y/m/d H:i:s', $str);

}

}

20.中英文字符截取成数组

function mb_str_split ($string, $len=1) {

   $start = 0;

   $strlen = mb_strlen($string);

   while ($strlen) {

       $array[] = mb_substr($string,$start,$len,"utf8");

       $string = mb_substr($string, $len, $strlen,"utf8");

       $strlen = mb_strlen($string);

   }

   return $array;

}

21.过滤危险字符

    function filter($str) {

   

$newstr=mysql_escape_string($str);


$arr=array('ﭐٍّ',' ॗ','ض','ﭐٍ','ॗ','ﭐ ٍّ');


$newstr=str_replace($arr,'',$newstr);


return $newstr;


    }
--------------------- 
 

猜你喜欢

转载自blog.csdn.net/qq_16059847/article/details/88355123
今日推荐