admin/app/common/helpers/Url.php

225 lines
6.3 KiB
PHP

<?php
namespace app\common\helpers;
/**
* Url生成类
*
* Author:
* Date: 21/02/2017
* Time: 18:02
*/
class Url
{
public static function shopUrl($uri)
{
if(empty($uri) || self::isHttp($uri)){
return $uri;
}
//$domain = request()->getSchemeAndHttpHost();
$module = request()->get('m','yun_shop');
return self::getPath($module) . (strpos($uri,'/') === 0 ? '':'/') . $uri;
}
public static function shopSchemeUrl($uri)
{
if(empty($uri) || self::isHttp($uri)){
return $uri;
}
$domain = request()->getSchemeAndHttpHost();
$module = request()->get('m','yun_shop');
return $domain . self::getPath($module) . (strpos($uri,'/') === 0 ? '':'/') . $uri;
}
/**
* 生成后台相对Url
* 路由 api.v1.test.index 为 app/backend/moduels/api/modules/v1/TestController index
* @param $route
* @param array $params
* @return string
*/
public static function web($route, $params = [])
{
if(self::isHttp($route)){
return $route;
}
if (config('app.framework') == 'platform') {
$defaultParams = ['route'=>$route];
$params = array_merge($defaultParams, $params);
return config('app.isWeb'). '?'. http_build_query($params);
} else {
$defaultParams = ['c'=>'site','a'=>'entry','m'=>'yun_shop','do'=>rand(1000,9999),'route'=>$route];
$params = array_merge($defaultParams, $params);
return '/web/index.php?'. http_build_query($params);
}
}
/**
* 生成前台相对Url
* 路由 api.v1.test.index 为 app/frontend/moduels/api/modules/v1/TestController index
* @param $route
* @param array $params
* @return string
*/
public static function app($route, $params = [])
{
if(empty($route) || self::isHttp($route)){
return $route;
}
if(strpos($route, '/') !== 0){
$route = '/' . $route;
}
if(!isset($params['i'])){
$params['i'] = \YunShop::app()->uniacid;
}
$module = request()->get('m','yun_shop');
return '/addons/' . $module . '/?menu#'.$route . ($params ? '?'.http_build_query($params) : '');
}
public static function appDiy($route, $params = [])
{
if(empty($route) || self::isHttp($route)){
return $route;
}
if(strpos($route, '/') !== 0){
$route = '/' . $route;
}
if(!isset($params['i'])){
$params['i'] = \YunShop::app()->uniacid;
}
$module = request()->get('m','yun_shop');
return '/addons/' . $module . '/?menu#'.$route . ($params ? '/'. $params['page_id'] . '/?i=' . $params['i'] : '');
}
/**
* 前端api接口相对Url
*
* @param $route
* @param array $params
* @return string
*/
public static function api($route, $params = [])
{
if(empty($route) || self::isHttp($route)){
return $route;
}
$defaultParams = ['i'=>\YunShop::app()->uniacid,'route'=>$route];
$params = array_merge($defaultParams, $params);
return '/addons/yun_shop/api.php?'. http_build_query($params);
}
/**
* 前端api接口相对Url
*
* @param $route
* @param array $params
* @return string
*/
public static function plugin($route, $params = [])
{
if(empty($route) || self::isHttp($route)){
return $route;
}
$defaultParams = ['i'=>\YunShop::app()->uniacid,'route'=>$route];
$params = array_merge($defaultParams, $params);
if (config('app.framework') == 'platform') {
return config('app.isWeb') . '/plugig?'. http_build_query($params);
} else {
return '/web/plugin.php?'. http_build_query($params);
}
}
/**
* 生成后台绝对地址
* 路由 api.v1.test.index 为 app/backend/moduels/api/modules/v1/TestController index
*
* @param $route
* @param array $params
* @param string $domain
* @return string
*/
public static function absoluteWeb($route, $params = [], $domain = '')
{
if(empty($route) || self::isHttp($route)){
return $route;
}
empty($domain) && ($domain = request()->getSchemeAndHttpHost());
return $domain . self::web($route,$params);
}
/**
* 生成前台绝对地址
* 路由 /home
* @param $route
* @param array $params
* @param string $domain
* @return string
*/
public static function absoluteApp($route, $params = [], $domain = '')
{
if(empty($route) || self::isHttp($route)){
return $route;
}
empty($domain) && $domain = request()->getSchemeAndHttpHost();
return $domain . self::app($route,$params);
}
public static function absoluteDiyApp($route, $params = [], $domain = '')
{
if(empty($route) || self::isHttp($route)){
return $route;
}
empty($domain) && $domain = request()->getSchemeAndHttpHost();
return $domain . self::appDiy($route,$params);
}
/**
* 生成Api绝对URL地址
* @param $route
* @param array $params
* @param string $domain
* @return string
*/
public static function absoluteApi($route, $params = [], $domain = '')
{
if(empty($route) || self::isHttp($route)){
return $route;
}
empty($domain) && $domain = request()->getSchemeAndHttpHost();
return $domain . self::api($route,$params);
}
/**
* 生成插件绝对URL地址
* @param $route
* @param array $params
* @param string $domain
* @return string
*/
public static function absolutePlugin($route, $params = [], $domain = '')
{
if(empty($route) || self::isHttp($route)){
return $route;
}
empty($domain) && $domain = request()->getSchemeAndHttpHost();
return $domain . self::plugin($route,$params);
}
public static function isHttp($url)
{
return (strpos($url,'http://') === 0 || strpos($url,'https://') === 0);
}
public static function getPath($module)
{
if (config('app.framework') == 'platform') {
return '';
}
return '/addons/' . $module;
}
}