🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
**一些内置函数** 命令行中,防止重复执行 ~~~ if(!is_cli()){ exit('RUN IN CLI'); } set_time_limit(-1); ini_set('memory_limit','1024M'); cli_prevent_duplication($argv, $cmd = 'php io.php'); ~~~ 判断平台管理员是否登录,未登录自动跳到登录页 ~~~ check_admin_login(); ~~~ 写日志 ~~~ write_log($msg,$is_error = false) ~~~ 生成条形码 ~~~ $bar = new lib\Barcode; echo $bar->display(date("YmdHis"));exit; ~~~ 发送邮件,配置在 `config.ini.php`中。 ~~~ \lib\Mail::send([ 'from' => 'ddd@163.com', 'to' => $data['email'], 'subject'=> "标题, 'html' => "<p>内容</p>" ]); ~~~ 取位置lat,lng ~~~ https://lbs.qq.com/dev/console/key/setting lib\Map::tx('地址') 腾讯地图 lib\Map::gaode($address, $show_full = false)高德地图 ~~~ 最近几天 ~~~ lib\Time::neerDays($num = 5,$separate = "") ~~~ 返回最近几月 ~~~ lib\Time::neerMonths($num = 5,$separate = "") ~~~ 返回最近几年 ~~~ lib\Time::neerYears($num = 5,$separate = "") ~~~ 取今日、本周、本月、本年、昨日、上周、上月、上年 ~~~ lib\Time::get($key, $date_format = false) ~~~ 返回多少岁 ~~~ lib\Time::age($bornUnix) ~~~ 计算时间剩余  ~~~ lib\Time::less_time($a, $b = null) ~~~ 返回图片信息 ~~~ $file = PATH.'../demos/doc/1.jpg'; $pdf = new \lib\Img($file); //取长宽 print_r($pdf->getWh()); //2是横版,1是竖版 print_r($pdf->getDimensionsType()); ~~~ 多少时间之前 ~~~ timeago($time) ~~~ 设置配置 ~~~ set_config($title,$body) ~~~ 优先取数据库,未找到后取配置文件 ~~~ get_config($title) ~~~ XML 转成 数组 ~~~ xml_to_array($xml) ~~~ 数组转xml ~~~ array_to_xml($arr) ~~~ AES加密 ~~~ $config['aes_key'] = "123456"; $config['aes_iv'] = md5('app_sun'); $token = urlencode(aes_encode($d)); ~~~ 返回两个时间点间的日期数组 ~~~ get_dates($start, $end) ~~~ 当前时间是周几 ~~~ get_current_week($date) ~~~ 多语言翻译 ~~~ lang('welcome',['name'=>'test'] ) ~~~ 配置文件在 `lang/zh-cn/app.php`中。 搜索替换\n , ,空格。 转成数组 ~~~ string_to_array($str) ~~~ AES解密 ~~~ $token = $_GET['token']; $token = aes_decode($token); pr($token); ~~~ 根据用户id查用户信息 ~~~ get_user($user_id) ~~~ 查用户信息,where条件 ~~~ get_user_where($where = []) ~~~ 取用户扩展字段值 ~~~ get_user_meta($user_id) ~~~ 更新用户的meta信息 ,参数$meta如 ['nickname'=>''] ~~~ set_user_meta($user_id,$meta) ~~~ 获取HTTP_REFERER ~~~ referer($show_full = false) ~~~ 当前域名 ,结尾带/ ~~~ host() ~~~ 取用户扩展字段值 ~~~ get_user_meta_where($where = [],$return_row = false) ~~~ 所有会员 ~~~ get_user_all($where = []) ~~~ 取单个用户组信息 ~~~ user_group_get($group_id) ~~~ 跳转 ~~~ jump($url) ~~~ CDN地址,需要在`config.ini.php`配置` $config['cdn_url'] = [];` ~~~ static_url() ~~~ 判断是命令行下 ~~~ is_cli() ~~~ 判断是否为json ~~~ is_json($str) ~~~ 数组转对象 ~~~ array_to_object($arr) ~~~ 对象转数组 ~~~ object_to_array($obj) ~~~ 取目录名 ~~~ get_dir($name) ~~~ 取后缀,不包含`.` ~~~ get_ext($name) ~~~ 取文件名 ~~~ get_name($name) ~~~ 创建目录 ~~~ create_dir($arr = []) ~~~ 取IP ~~~ get_ip() ~~~ 计算两点地理坐标之间的距离,返回公里数 ~~~ get_distance($longitude1, $latitude1, $longitude2, $latitude2) ~~~ 设置、获取cookie ~~~ cookie($name, $value = null, $expire = 0, $path = '/') ~~~ 删除COOKIE ~~~ remove_cookie($name) ~~~ 返回 min="1900-01-01" max="2099-12-31" ~~~ date_limit() ~~~ 路径列表,支持文件夹下的子所有文件夹 ~~~ get_deep_dir($path) ~~~ 返回成功信息,JSON格式 ~~~ json_success($arr = []) ~~~ 返回错误信息,JSON格式 ~~~ json_error($arr = []) ~~~ yaml转数组,数组转yaml格式 ~~~ yaml($str) ~~~ 解析xlsx文件 ~~~ $lists = lib\Xls::load($file, [ '产品编号' => 'product_num', '产品规格' => 'name', '注册证号' => 'cert_num', '单位' => 'unit', ],$column_use_date = []); ~~~ `$column_use_date ` 指定哪几列是时间格式 xls生成 ~~~ 生成多个worksheet事例: $where = [ 'status' => 1, 'date[>=]' => $start, 'date[<=]' => $end, ]; $title = [ 'invoice_number' => '发票号码', 'customer_name' => '供应商', 'product_num' => '规格型号', 'num' => '数量', 'price' => '单价', 'total_price' => '金额', ]; //专票 $where['invoice_type'] = 1; $values = invoice_set_xls_data($where,$title); //普票 $where['invoice_type'] = 2; $new_data = invoice_set_xls_data($where,$title); //第一个worksheet Xls::$label = '专票'; Xls::$sheet_width = [ 'A' => "15", 'B' => "36", 'C' => "30", 'D' => "10", 'E' => "10", 'F' => "10", ]; //更多worksheet,如果只是一个,可不用下面代码,直接跳到Xls::create处 Xls::$works = [ [ 'title' => $title, 'label' => '普票', 'data' => $new_data, 'width' => Xls::$sheet_width, ] ]; Xls::create($title, $values, $name, true); ~~~ 验证数据 ~~~ $data = g(); $vali = validate([ 'company_title' => '客户名', 'email' => '邮件地址', 'active_plugins' => '系统', 'exp_time' => '过期时间', ],$data,[ 'required' => [ ['company_title'], ['email'], ['active_plugins'], ['exp_time'], ], 'email'=>[ ['email'] ] ]); if($vali){ json($vali); } ~~~ 规则 ~~~ required - Field is required requiredWith - Field is required if any other fields are present requiredWithout - Field is required if any other fields are NOT present equals - Field must match another field (email/password confirmation) different - Field must be different than another field accepted - Checkbox or Radio must be accepted (yes, on, 1, true) numeric - Must be numeric integer - Must be integer number boolean - Must be boolean array - Must be array length - String must be certain length lengthBetween - String must be between given lengths lengthMin - String must be greater than given length lengthMax - String must be less than given length min - Minimum max - Maximum listContains - Performs in_array check on given array values (the other way round than in) in - Performs in_array check on given array values notIn - Negation of in rule (not in array of values) ip - Valid IP address ipv4 - Valid IP v4 address ipv6 - Valid IP v6 address email - Valid email address emailDNS - Valid email address with active DNS record url - Valid URL urlActive - Valid URL with active DNS record alpha - Alphabetic characters only alphaNum - Alphabetic and numeric characters only ascii - ASCII characters only slug - URL slug characters (a-z, 0-9, -, _) regex - Field matches given regex pattern date - Field is a valid date dateFormat - Field is a valid date in the given format dateBefore - Field is a valid date and is before the given date dateAfter - Field is a valid date and is after the given date contains - Field is a string and contains the given string subset - Field is an array or a scalar and all elements are contained in the given array containsUnique - Field is an array and contains unique values creditCard - Field is a valid credit card number instanceOf - Field contains an instance of the given class optional - Value does not need to be included in data array. If it is however, it must pass validation. arrayHasKeys - Field is an array and contains all specified keys. ~~~ 数组转tree ~~~ /** * 数组转tree * * 输入$list * [ * {id:1,pid:0,其他字段}, * {id:2,pid:1,其他字段}, * {id:3,pid:1,其他字段}, * ] * 输出 * [ * [ * id:1, * pid:0, * 其他字段, * children:[ * {id:2,pid:1,其他字段}, * {id:3,pid:1,其他字段}, * ] * ] * ] * */ array_to_tree($list, $pk = 'id', $pid = 'pid', $child = 'children', $root = 0, $my_id = '') ~~~