# 函数

# 数组或字符输出

pr($str);

# 版本号

get_version()

对应 https://github.com/thefunpower/core 的version.php

# 获取本地include文件内容

get_include_content($local_file)

# 添加动作

add_action($name, $call,$level = 20)

# 执行动作

do_action($name, &$par = null);

# 自动加载主题

autoload_theme($name = "front")

# 跳转

jump($url)

# CDN地址

static_url()

需要配置

$config['cdn_url'] = [
	'',
];

如果没有配置将返回本地host地址

# 输出json

json($data)

JSON输出前

do_action('end.data', $data);

JSON输出后或页面渲染后

do_action("end");

# 当前域名

host()

# 判断是命令行下

is_cli()

# 是否是POST请求

is_post()

# 是否是json格式

is_json($data)

# 加载css

css($file, $is_output = true)

# 加载 JS文件

js($file, $is_output = true)

# 数组转对象

array_to_object($arr)

# 对象转数组

object_to_array($obj)

# 取目录名

get_dir($name)

# 取后缀

get_ext($name)

返回全小写且不包含.

# 取文件名

get_name($name)

# 创建目录

create_dir_if_not_exists($arr = [])

支持数组或字符串,传入完整的本地路径

# 是否是本地环境

is_local()

# 取IP

get_ip()

# 当前时间datetime

now()

# 计算两点地理坐标之间的距离

get_distance($longitude1, $latitude1, $longitude2, $latitude2, $unit = 2, $decimal = 2)

$unit 单位 1:米 2:公里

$decimal 精度 保留小数位数

# 判断是否是ssl

is_ssl()

# 设置、获取cookie

cookie($name, $value = NULL, $expire = 0)

例:

//设置三年cookie
cookie('id',1,time()+86400*365*3);
//获取cookie
cookie('id')

# 删除cookie

remove_cookie($name)

# 时间区间

一般用不到

date_limit()

返回

 min="1900-01-01" max="'.$max.'-12-31"

# 路径列表,支持文件夹下的子所有文件夹

get_deep_dir($path)

# 显示2位小数

price_format($yuan,$dot = 2)

# 返回错误信息,JSON格式

json_error($arr = [])

# 返回成功信息,JSON格式

json_success($arr = [])

# yaml转数组,数组转yaml格式

yaml($str)

# 加载theme下文件

view($name, $params = [])

# 前台当前主题

get_theme()

# 前台主题url

theme_url()

# 设置前台主题

set_theme($name)

# 设置后台主题

set_admin_theme($name)

# 后台主题url

admin_theme_url()

# 设置配置

set_config($title, $body)

# 获取配置

优先取数据库,未找到后取配置文件

get_config($title)

# elementui table序号

在vue method中添加

<?= element_index_method() ?>,

生成indexMethod(index)

<el-table-column type="index" label="序号" :index="indexMethod" width="50">
</el-table-column>

# 每页显示多少条记录

page_size($name)

# 显示下拉选择分页每页显示多少条

page_size_array()

# AES加密

$token = urlencode(aes_encode($d)); 
aes_encode($data, $key = '', $iv = '', $type = 'AES-128-CBC', $options = '')

$data如果是数组需json_encode

配置config.ini.php

$config['aes_key'] = "";
$config['aes_iv']  = "";

# AES解密

$token = $_GET['token']; 
$token = aes_decode($token);
pr($token);

# 翻译

lang($name, $val = [], $pre = 'app')

配置lang/app.php

return [
    'welcome' => '你好{name}', 
]; 

调用

<?= lang('welcome',['name'=>'test'])?>

# 搜索替换\n , ,空格

string_to_array($name,$array = '')

已替换

"\n",
",",
"、",
"|",
",",
chr(10),

# 返回两个时间点间的日期数组

get_dates($start, $end)

时间格式 Y-m-d

# 当前时间是周几

时间格式 Y-m-d

get_date_china($date)

# 多少时间之前

timeago($time)

# 请求是否是AJAX

is_ajax()

# 防止重复执行

cli_prevent_duplication($argv, $cmd = 'php cmd.php')

# 包含文件

import($file)

# 生成表单TOKEN,防止重复提交

<input type="hidden" name="form_token" value="<?=create_form_token()?>">

# 检测表单TOKEN

check_form_token(g('form_token'));

# 检测reffer是否正常,如异常返回JSON

check_reffer_with_json($allow_domain = [], $is_root = true)

# 检测reffer

返回true或false

check_reffer($allow_domain = [], $is_root = true)

# 取reffer

get_reffer($refer = '')

# 取主域名,如 admin.baidu.com返回baidu.com

get_root_domain($host = '')

# 取子域名,如admin.baidu.com返回admin

get_sub_domain($host = '')

# admin header

admin_header()
admin_footer()

# 格式化金额

format_money($money, $len = 2, $sign = '¥')

# 生成签名

sign_by_secret($params,$secret='',$array_encode = false)

# 设置当前语言

set_lang($lang = 'zh-cn')

# 生成URL包含host

create_url($url)

# block

BLOCK开始

block_start($name)
block_end()
get_block($name)

# ZIP解压

zip_extract($local_file,$extract_local_dir)

# 生成ZIP

zip_create($local_zip_file,$files = [])

# PDF

加载pdf,自动判断是否使用了背景文字水印

pdf_auto($text = null)

无水印

pdf($font_size = 9,$default_config_option=[])

文字水印

pdf_watermark($text = null)

https://mpdf.github.io/

# 生成签名链接 [实验]

create_sample_sign_url($arr = [])

# 验证签名链接是否可用 [实验]

$exp_time

verify_sample_sign_url($exp_time = 60)

# 检查签名防止篡改 [实验]

错误时返回 签名错误

signature_checker()

签名生成的通用步骤如下: 第一步:将参与签名的参数按照键值(key)进行字典排序 第二步:将排序过后的参数,进行key和value字符串拼接 第三步:将拼接后的字符串首尾加上app_secret秘钥,合成签名字符串 第四步:对签名字符串进行MD5加密,生成32位的字符串 第五步:将签名生成的32位字符串转换为大写

# 数组转tree

array_to_tree

array_to_tree($list, $pk = 'id', $pid = 'pid', $child = 'children', $root = 0, $my_id = '')

输入$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,其他字段},
     ]
  ]
]