Url.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <?php
  2. namespace app\common\helpers;
  3. /**
  4. * Url生成类
  5. *
  6. * Author: 芸众商城 www.yunzshop.com
  7. * Date: 21/02/2017
  8. * Time: 18:02
  9. */
  10. class Url
  11. {
  12. public static function shopUrl($uri)
  13. {
  14. if(empty($uri) || self::isHttp($uri)){
  15. return $uri;
  16. }
  17. //$domain = request()->getSchemeAndHttpHost();
  18. $module = request()->get('m','yun_shop');
  19. return self::getPath($module) . (strpos($uri,'/') === 0 ? '':'/') . $uri;
  20. }
  21. public static function shopSchemeUrl($uri)
  22. {
  23. if(empty($uri) || self::isHttp($uri)){
  24. return $uri;
  25. }
  26. $domain = request()->getSchemeAndHttpHost();
  27. $module = request()->get('m','yun_shop');
  28. return $domain . self::getPath($module) . (strpos($uri,'/') === 0 ? '':'/') . $uri;
  29. }
  30. /**
  31. * 生成后台相对Url
  32. * 路由 api.v1.test.index 为 app/backend/moduels/api/modules/v1/TestController index
  33. * @param $route
  34. * @param array $params
  35. * @return string
  36. */
  37. public static function web($route, $params = [])
  38. {
  39. if(self::isHttp($route)){
  40. return $route;
  41. }
  42. if (config('app.framework') == 'platform') {
  43. $defaultParams = ['route'=>$route];
  44. $params = array_merge($defaultParams, $params);
  45. return config('app.isWeb'). '?'. http_build_query($params);
  46. } else {
  47. $defaultParams = ['c'=>'site','a'=>'entry','m'=>'yun_shop','do'=>rand(1000,9999),'route'=>$route];
  48. $params = array_merge($defaultParams, $params);
  49. return '/web/index.php?'. http_build_query($params);
  50. }
  51. }
  52. /**
  53. * 生成前台相对Url
  54. * 路由 api.v1.test.index 为 app/frontend/moduels/api/modules/v1/TestController index
  55. * @param $route
  56. * @param array $params
  57. * @return string
  58. */
  59. public static function app($route, $params = [])
  60. {
  61. if(empty($route) || self::isHttp($route)){
  62. return $route;
  63. }
  64. if(strpos($route, '/') !== 0){
  65. $route = '/' . $route;
  66. }
  67. if(!isset($params['i'])){
  68. $params['i'] = \YunShop::app()->uniacid;
  69. }
  70. $module = request()->get('m','yun_shop');
  71. return '/addons/' . $module . '/?menu#'.$route . ($params ? '?'.http_build_query($params) : '');
  72. }
  73. public static function appDiy($route, $params = [])
  74. {
  75. if(empty($route) || self::isHttp($route)){
  76. return $route;
  77. }
  78. if(strpos($route, '/') !== 0){
  79. $route = '/' . $route;
  80. }
  81. if(!isset($params['i'])){
  82. $params['i'] = \YunShop::app()->uniacid;
  83. }
  84. $module = request()->get('m','yun_shop');
  85. return '/addons/' . $module . '/?menu#'.$route . ($params ? '/'. $params['page_id'] . '/?i=' . $params['i'] : '');
  86. }
  87. /**
  88. * 前端api接口相对Url
  89. *
  90. * @param $route
  91. * @param array $params
  92. * @return string
  93. */
  94. public static function api($route, $params = [])
  95. {
  96. if(empty($route) || self::isHttp($route)){
  97. return $route;
  98. }
  99. $defaultParams = ['i'=>\YunShop::app()->uniacid,'route'=>$route];
  100. $params = array_merge($defaultParams, $params);
  101. return '/addons/yun_shop/api.php?'. http_build_query($params);
  102. }
  103. /**
  104. * 前端api接口相对Url
  105. *
  106. * @param $route
  107. * @param array $params
  108. * @return string
  109. */
  110. public static function plugin($route, $params = [])
  111. {
  112. if(empty($route) || self::isHttp($route)){
  113. return $route;
  114. }
  115. $defaultParams = ['i'=>\YunShop::app()->uniacid,'route'=>$route];
  116. $params = array_merge($defaultParams, $params);
  117. if (config('app.framework') == 'platform') {
  118. return config('app.isWeb') . '/plugig?'. http_build_query($params);
  119. } else {
  120. return '/web/plugin.php?'. http_build_query($params);
  121. }
  122. }
  123. /**
  124. * 生成后台绝对地址
  125. * 路由 api.v1.test.index 为 app/backend/moduels/api/modules/v1/TestController index
  126. *
  127. * @param $route
  128. * @param array $params
  129. * @param string $domain
  130. * @return string
  131. */
  132. public static function absoluteWeb($route, $params = [], $domain = '')
  133. {
  134. if(empty($route) || self::isHttp($route)){
  135. return $route;
  136. }
  137. empty($domain) && ($domain = request()->getSchemeAndHttpHost());
  138. return $domain . self::web($route,$params);
  139. }
  140. /**
  141. * 生成前台绝对地址
  142. * 路由 /home
  143. * @param $route
  144. * @param array $params
  145. * @param string $domain
  146. * @return string
  147. */
  148. public static function absoluteApp($route, $params = [], $domain = '')
  149. {
  150. if(empty($route) || self::isHttp($route)){
  151. return $route;
  152. }
  153. empty($domain) && $domain = request()->getSchemeAndHttpHost();
  154. return $domain . self::app($route,$params);
  155. }
  156. public static function absoluteDiyApp($route, $params = [], $domain = '')
  157. {
  158. if(empty($route) || self::isHttp($route)){
  159. return $route;
  160. }
  161. empty($domain) && $domain = request()->getSchemeAndHttpHost();
  162. return $domain . self::appDiy($route,$params);
  163. }
  164. /**
  165. * 生成Api绝对URL地址
  166. * @param $route
  167. * @param array $params
  168. * @param string $domain
  169. * @return string
  170. */
  171. public static function absoluteApi($route, $params = [], $domain = '')
  172. {
  173. if(empty($route) || self::isHttp($route)){
  174. return $route;
  175. }
  176. empty($domain) && $domain = request()->getSchemeAndHttpHost();
  177. return $domain . self::api($route,$params);
  178. }
  179. /**
  180. * 生成插件绝对URL地址
  181. * @param $route
  182. * @param array $params
  183. * @param string $domain
  184. * @return string
  185. */
  186. public static function absolutePlugin($route, $params = [], $domain = '')
  187. {
  188. if(empty($route) || self::isHttp($route)){
  189. return $route;
  190. }
  191. empty($domain) && $domain = request()->getSchemeAndHttpHost();
  192. return $domain . self::plugin($route,$params);
  193. }
  194. public static function isHttp($url)
  195. {
  196. return (strpos($url,'http://') === 0 || strpos($url,'https://') === 0);
  197. }
  198. public static function getPath($module)
  199. {
  200. if (config('app.framework') == 'platform') {
  201. return '';
  202. }
  203. return '/addons/' . $module;
  204. }
  205. }