119 lines
3.1 KiB
PHP
119 lines
3.1 KiB
PHP
<?php
|
|
if (! function_exists('tap')) {
|
|
/**
|
|
* Call the given Closure with the given value then return the value.
|
|
*
|
|
* @param mixed $value
|
|
* @param callable|null $callback
|
|
* @return mixed
|
|
*/
|
|
function tap($value, $callback = null)
|
|
{
|
|
if (is_null($callback)) {
|
|
return new \backend\components\HigherOrderTapProxy($value);
|
|
}
|
|
|
|
$callback($value);
|
|
|
|
return $value;
|
|
}
|
|
}
|
|
if (!function_exists("app_route")) {
|
|
|
|
/**
|
|
* 生成符合前端解析的url
|
|
*/
|
|
function app_route($route, $params = [], $absolute = true, $model = '', $field = [])
|
|
{
|
|
|
|
$paramsFix = [];
|
|
$paramsModel = [];
|
|
$data = [];
|
|
// 解析{}变量
|
|
foreach ($params as $k => $v) {
|
|
preg_match('/(?:\{)(.*)(?:\})/i', $v, $match);
|
|
if (isset($match[1])) {
|
|
$paramsFix[$k] = $match[1];
|
|
$data[$k] = 'Ss' . $k . 'sS';
|
|
} else {
|
|
if (in_array($v, $field)) {
|
|
$paramsModel[$k] = $v;
|
|
$data[$k] = 'Ss' . $k . 'sS';
|
|
} else {
|
|
$data[$k] = $v;
|
|
}
|
|
}
|
|
}
|
|
|
|
$url = route($route, $data, $absolute);
|
|
|
|
// 解析js变量
|
|
foreach ($paramsFix as $k => $v) {
|
|
$url = str_replace('Ss' . $k . 'sS', '${' . $v . ' || \'\'}', $url);
|
|
}
|
|
foreach ($paramsModel as $k => $v) {
|
|
$url = str_replace('Ss' . $k . 'sS', '${' . ($model ? $model . '.' : '') . $v . '|| \'\'}', $url);
|
|
}
|
|
$url = "`$url`";
|
|
|
|
return $url;
|
|
}
|
|
}
|
|
|
|
if (!function_exists("app_filesize")) {
|
|
/**
|
|
* 文件大小转换
|
|
* @param $num
|
|
* @return string
|
|
*/
|
|
function app_filesize($num)
|
|
{
|
|
$p = 0;
|
|
$format = 'bytes';
|
|
if ($num > 0 && $num < 1024) {
|
|
$p = 0;
|
|
return number_format($num) . ' ' . $format;
|
|
}
|
|
if ($num >= 1024 && $num < pow(1024, 2)) {
|
|
$p = 1;
|
|
$format = 'KB';
|
|
}
|
|
if ($num >= pow(1024, 2) && $num < pow(1024, 3)) {
|
|
$p = 2;
|
|
$format = 'MB';
|
|
}
|
|
if ($num >= pow(1024, 3) && $num < pow(1024, 4)) {
|
|
$p = 3;
|
|
$format = 'GB';
|
|
}
|
|
if ($num >= pow(1024, 4) && $num < pow(1024, 5)) {
|
|
$p = 3;
|
|
$format = 'TB';
|
|
}
|
|
$num /= pow(1024, $p);
|
|
return number_format($num, 3) . ' ' . $format;
|
|
}
|
|
}
|
|
|
|
if(!function_exists('route')){
|
|
function route($route,$data,$absolute=true){
|
|
//if(isset($data['id'])){
|
|
// $route .='/'.$data['id'];
|
|
// unset($data['id']);
|
|
//}
|
|
//$data[0] = $route;
|
|
//return Yii::$app->urlManager->createUrl($data);
|
|
$http_build_query = http_build_query($data);
|
|
return $route.($http_build_query?'?'.$http_build_query:"");
|
|
}
|
|
}
|
|
if (!function_exists('url_class')) {
|
|
function url_class($url): array
|
|
{
|
|
return [
|
|
'class' => Yii::$app->controller->getUniqueId(),
|
|
'action' => Yii::$app->controller->action->getUniqueId()
|
|
];
|
|
}
|
|
}
|