Files
xk-api-yii/admin/config/bootstrap.php
2024-09-19 11:32:39 +08:00

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()
];
}
}