1. 自动加载:

     /*
      * @desc:自动加载带命名空间的类的函数
      * @param $dir 需要注册自动加载的文件夹
      * @param $namespace 文件夹对应的命名空间
      */
     function autoloader($dir,$namespace){
         spl_autoload_register(function($name) use ($dir,$namespace){
             $name = str_replace('\\',DIRECTORY_SEPARATOR,$name);
             $namespace = str_replace('\\',DIRECTORY_SEPARATOR,$namespace);
             $name = str_replace($namespace.DIRECTORY_SEPARATOR,'',$name);
             require $dir.DIRECTORY_SEPARATOR.$name.'.php';
         });
     }
  2. 无限级分类:

    1. 树形分类:
       /*
        * 生成树形结构
        * @param $array 分类数据
        * @param $pid 父级id
        * @param $son 子级分类名
        * @return $list 整理好分类的数组
        */
       function getTree($array,$id = 'id',$pid = 'pid',$son = 'children'){
           $list = array(); //格式化的树
           $tmpMap = array(); //临时扁平数据
           foreach ($array as $item) {
               $tmpMap[$item[$id]] = $item;
           }
           foreach ($array as $item) {
               if (isset($tmpMap[$item[$pid]])) {
                   $tmpMap[$item[$pid]][$son][] = &$tmpMap[$item[$id]];
               } else {
                   $list[] = &$tmpMap[$item[$id]];
               }
           }
           unset($tmpMap);
           return $list;
       }
    2. 层级分类:
       /*
        * 递归实现无限极分类
        * @param $array 分类数据
        * @param $pid 父级id
        * @param $level 分类级别,用来显示格式用的
        * @return $list 整理好分类的数组
        */
       function getLevel($array, $pid = 0, $level = 0){
           // 声明静态数组,避免递归调用时,多次声明导致数组覆盖
           static $list = [];
           foreach ($array as $key => $value) {
               if ($value['pid'] == $pid) {
                   $value['level'] = $level;
                   $list[]         = $value;
                   unset($array[$key]);
                   getLevel($array, $value['id'], $level + 1);
               }
           }
           return $list;
       }
  3. 全局错误处理:

     set_error_handler(function($level,$msg,$file,$line){
         if($level < 8){
             $arr = array(
                 "错误等级:" => $level,
                 "错误信息:" => $msg,
                 "出错文件:" => $file,
                 "出错行数:" => $line
             );
             var_dump($arr);
         }
     });
     set_exception_handler(function($e){
         $msg = $e->getMessage();
         $file = $e->getFile();
         $line = $e->getLine();
         $arr = array(
             '异常信息:' => $msg,
             '异常文件:' => $file,
             '异常行数:' => $line
         );
         var_dump($arr);
     });
  4. http 请求函数:

    1. GET 请求:
       /*
        * http GET 请求
        * @param url 请求地址
        * @return ret 响应文本
        */
       function http_get($url){
           $curl = curl_init();
           curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
           curl_setopt($curl, CURLOPT_URL, $url);
           $ret = curl_exec($curl);
           curl_close($curl);
           return $ret;
       }
    2. POST 请求(可上传文件):
       /*
        * http POST 请求(可上传文件)
        * @param url 请求地址
        * @param data array 请求参数
        * @param filekey(可选) 上传文件的 key
        * @param path(可选) 待上传文件的本地路径
        * @return ret 响应文本
        */
       function http_post($url,$data,$filekey = '',$path = ''){
           if($filekey){
               $data[$filekey] = new CURLFile($path);
           }
           $curl = curl_init();
           curl_setopt($curl, CURLOPT_URL, $url);
           curl_setopt($curl, CURLOPT_POST, true );
           curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
           curl_setopt($curl, CURLOPT_HEADER, false);
           curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
           $ret = curl_exec($curl);
           curl_close($curl);
           return $ret;
       }
    3. JSON/XML 请求:
       /*
        * http JSON/XML 请求
        * @param url 请求地址
        * @param data array 请求参数
        * @return ret 响应文本
        */
       function http_json($url,$data){
           $json = json_encode($data);
           $curl = curl_init($url);
           curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
           curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
           curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
           curl_setopt($curl, CURLOPT_HTTPHEADER, [
                   'Content-Type: application/json',
                   'Content-Length: ' . strlen($json)
               ]
           );
           $ret = curl_exec($curl);
           curl_close($curl);
           return $ret;
       }
  5. 过滤空格(包含中文空格):
    preg_replace('/[(\xc2\xa0)|\s]+/','', $str);

  6. 获取 pid(进程ID):
    getmypid();

  7. date 格式化选项:

时间单位 字符 返回示例 说明
Y 1999 或 2003 4 位数字完整表示的年份
y 99 或 03 2 位数字表示的年份
- - - -
m 01 到 12 数字表示的月份,有前导零
n 1 到 12 数字表示的月份,没有前导零
t 28 到 31 当前月份总共有多少天
- - - -
d 01 到 31 月份中的第几天,有前导零的 2 位数字
j 1 到 31 月份中的第几天,没有前导零
z 0 到 365 年份中的第几天
- - - -
N 1(星期一)到 7(星期天) 当前星期几
w 0(星期天)到 6(星期六) 当前星期几
W 42(当年的第 42 周) 年份中的第几周(从周一开始计算)
- - - -
H 00 到 23 24 小时制,有前导零
G 0 到 23 24 小时制,没有前导零
h 01 到 12 12 小时制,有前导零
g 1 到 12 12 小时制,没有前导零
- - - -
i 00 到 59 有前导零的分钟数
- - - -
s 00 到 59 有前导零的秒数
- - - -
时区 Z -43200 到 43200 时差偏移量的秒数,如中国的 UTC+8,表示:8 * 3600 = 28800
文档更新时间: 2024-04-19 15:11   作者:lee