264 lines
6.4 KiB
PHP
264 lines
6.4 KiB
PHP
<?php
|
|
|
|
// 应用公共函数库文件
|
|
|
|
use think\Request;
|
|
use think\Log;
|
|
|
|
/**
|
|
* 打印调试函数
|
|
* @param $content
|
|
* @param $is_die
|
|
*/
|
|
function pre($content, $is_die = true)
|
|
{
|
|
header('Content-type: text/html; charset=utf-8');
|
|
echo '<pre>' . print_r($content, true);
|
|
$is_die && die();
|
|
}
|
|
|
|
/**
|
|
* 驼峰命名转下划线命名
|
|
* @param $str
|
|
* @return string
|
|
*/
|
|
function toUnderScore($str)
|
|
{
|
|
$dstr = preg_replace_callback('/([A-Z]+)/', function ($matchs) {
|
|
return '_' . strtolower($matchs[0]);
|
|
}, $str);
|
|
return trim(preg_replace('/_{2,}/', '_', $dstr), '_');
|
|
}
|
|
|
|
/**
|
|
* 生成密码hash值
|
|
* @param $password
|
|
* @return string
|
|
*/
|
|
function yoshop_hash($password)
|
|
{
|
|
return md5(md5($password) . 'yoshop_salt_SmTRx');
|
|
}
|
|
|
|
/**
|
|
* 获取当前域名及根路径
|
|
* @return string
|
|
*/
|
|
function base_url()
|
|
{
|
|
$request = Request::instance();
|
|
$subDir = str_replace('\\', '/', dirname($request->server('PHP_SELF')));
|
|
return $request->scheme() . '://' . $request->host() . $subDir . ($subDir === '/' ? '' : '/');
|
|
}
|
|
|
|
/**
|
|
* 写入日志
|
|
* @param string|array $values
|
|
* @param string $dir
|
|
* @return bool|int
|
|
*/
|
|
function write_log($values, $dir)
|
|
{
|
|
if (is_array($values))
|
|
$values = print_r($values, true);
|
|
// 日志内容
|
|
$content = '[' . date('Y-m-d H:i:s') . ']' . PHP_EOL . $values . PHP_EOL . PHP_EOL;
|
|
try {
|
|
// 文件路径
|
|
$filePath = $dir . '/logs/';
|
|
// 路径不存在则创建
|
|
!is_dir($filePath) && mkdir($filePath, 0755, true);
|
|
// 写入文件
|
|
return file_put_contents($filePath . date('Ymd') . '.log', $content, FILE_APPEND);
|
|
} catch (\Exception $e) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 写入日志 (使用tp自带驱动记录到runtime目录中)
|
|
* @param $value
|
|
* @param string $type
|
|
* @return bool
|
|
*/
|
|
function log_write($value, $type = 'yoshop-info')
|
|
{
|
|
$msg = is_string($value) ? $value : print_r($value, true);
|
|
return Log::write($msg, $type);
|
|
}
|
|
|
|
/**
|
|
* curl请求指定url (get)
|
|
* @param $url
|
|
* @param array $data
|
|
* @return mixed
|
|
*/
|
|
function curl($url, $data = [])
|
|
{
|
|
// 处理get数据
|
|
if (!empty($data)) {
|
|
$url = $url . '?' . http_build_query($data);
|
|
}
|
|
$curl = curl_init();
|
|
curl_setopt($curl, CURLOPT_URL, $url);
|
|
curl_setopt($curl, CURLOPT_HEADER, false);
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//这个是重点。
|
|
$result = curl_exec($curl);
|
|
curl_close($curl);
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* curl请求指定url (post)
|
|
* @param $url
|
|
* @param array $data
|
|
* @return mixed
|
|
*/
|
|
function curlPost($url, $data = [])
|
|
{
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
curl_setopt($ch, CURLOPT_HEADER, 0);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|
$result = curl_exec($ch);
|
|
curl_close($ch);
|
|
return $result;
|
|
}
|
|
|
|
if (!function_exists('array_column')) {
|
|
/**
|
|
* array_column 兼容低版本php
|
|
* (PHP < 5.5.0)
|
|
* @param $array
|
|
* @param $columnKey
|
|
* @param null $indexKey
|
|
* @return array
|
|
*/
|
|
function array_column($array, $columnKey, $indexKey = null)
|
|
{
|
|
$result = array();
|
|
foreach ($array as $subArray) {
|
|
if (is_null($indexKey) && array_key_exists($columnKey, $subArray)) {
|
|
$result[] = is_object($subArray) ? $subArray->$columnKey : $subArray[$columnKey];
|
|
} elseif (array_key_exists($indexKey, $subArray)) {
|
|
if (is_null($columnKey)) {
|
|
$index = is_object($subArray) ? $subArray->$indexKey : $subArray[$indexKey];
|
|
$result[$index] = $subArray;
|
|
} elseif (array_key_exists($columnKey, $subArray)) {
|
|
$index = is_object($subArray) ? $subArray->$indexKey : $subArray[$indexKey];
|
|
$result[$index] = is_object($subArray) ? $subArray->$columnKey : $subArray[$columnKey];
|
|
}
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 多维数组合并
|
|
* @param $array1
|
|
* @param $array2
|
|
* @return array
|
|
*/
|
|
function array_merge_multiple($array1, $array2)
|
|
{
|
|
$merge = $array1 + $array2;
|
|
$data = [];
|
|
foreach ($merge as $key => $val) {
|
|
if (
|
|
isset($array1[$key])
|
|
&& is_array($array1[$key])
|
|
&& isset($array2[$key])
|
|
&& is_array($array2[$key])
|
|
) {
|
|
$data[$key] = array_merge_multiple($array1[$key], $array2[$key]);
|
|
} else {
|
|
$data[$key] = isset($array2[$key]) ? $array2[$key] : $array1[$key];
|
|
}
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* 二维数组排序
|
|
* @param $arr
|
|
* @param $keys
|
|
* @param bool $desc
|
|
* @return mixed
|
|
*/
|
|
function array_sort($arr, $keys, $desc = false)
|
|
{
|
|
$key_value = $new_array = array();
|
|
foreach ($arr as $k => $v) {
|
|
$key_value[$k] = $v[$keys];
|
|
}
|
|
if ($desc) {
|
|
arsort($key_value);
|
|
} else {
|
|
asort($key_value);
|
|
}
|
|
reset($key_value);
|
|
foreach ($key_value as $k => $v) {
|
|
$new_array[$k] = $arr[$k];
|
|
}
|
|
return $new_array;
|
|
}
|
|
|
|
/**
|
|
* 数据导出到excel(csv文件)
|
|
* @param $fileName
|
|
* @param array $tileArray
|
|
* @param array $dataArray
|
|
*/
|
|
function export_excel($fileName, $tileArray = [], $dataArray = [])
|
|
{
|
|
ini_set('memory_limit', '512M');
|
|
ini_set('max_execution_time', 0);
|
|
ob_end_clean();
|
|
ob_start();
|
|
header("Content-Type: text/csv");
|
|
header("Content-Disposition:filename=" . $fileName);
|
|
$fp = fopen('php://output', 'w');
|
|
fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));// 转码 防止乱码(比如微信昵称)
|
|
fputcsv($fp, $tileArray);
|
|
$index = 0;
|
|
foreach ($dataArray as $item) {
|
|
if ($index == 1000) {
|
|
$index = 0;
|
|
ob_flush();
|
|
flush();
|
|
}
|
|
$index++;
|
|
fputcsv($fp, $item);
|
|
}
|
|
ob_flush();
|
|
flush();
|
|
ob_end_clean();
|
|
}
|
|
|
|
/**
|
|
* 获取当前系统版本号
|
|
* @return mixed|null
|
|
* @throws Exception
|
|
*/
|
|
function get_version()
|
|
{
|
|
static $version = null;
|
|
if ($version) {
|
|
return $version;
|
|
}
|
|
$file = dirname(ROOT_PATH) . '/version.json';
|
|
if (!file_exists($file)) {
|
|
throw new Exception('version.json not found');
|
|
}
|
|
$version = json_decode(file_get_contents($file), true);
|
|
if (!is_array($version)) {
|
|
throw new Exception('version cannot be decoded');
|
|
}
|
|
return $version['version'];
|
|
}
|