自动加载:
/* * @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'; }); }
无限级分类:
- 树形分类:
/* * 生成树形结构 * @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; }
- 层级分类:
/* * 递归实现无限极分类 * @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; }
- 树形分类:
全局错误处理:
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); });
http 请求函数:
- 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; }
- 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; }
- 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; }
- GET 请求:
过滤空格(包含中文空格):
preg_replace('/[(\xc2\xa0)|\s]+/','', $str);
获取 pid(进程ID):
getmypid();
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