Пример #1
0
 /**
  * 返回url中的基础部分,不含文件名称,如:http://www.zotop.com/system/admin/index.php 或者 /system/admin/index.php
  *
  * @param boolean|string $page 页面名称,默认 为 true 则为 'index.php'
  * @param boolean $dir 是否只返回当前的目录名称
  * @param $domain 是否含有域名
  * @return string
  */
 public static function base($page = true, $domain = false)
 {
     $base = url::scriptname();
     if ($page !== true) {
         $base = dirname($base) . $page;
     }
     if ($domain == true) {
         $base = url::domain(true) . $base;
     }
     return $base;
 }
Пример #2
0
 /**
  * 根据参数生成完整的URL,如:url::build('site://zotop/index/default/arg1/arg2',array('param1'=>'1'),'#top')
  *
  * @param string 		$uri 		如:{application}://{module}/{controller}/{action}/{arg1}/arg2 组成
  * @param array|string 	$params 	URL参数 ,一般为数组,也可以是字符串,如:param1/1/param2/2
  * @param string 		$extra	 	额外数据:如锚点信息等
  * @return string		如:/index.php/module/controller/action/arg1/arg2?param1=1&param2=2#top
  */
 public static function build($uri = '', $params = null, $extra = '')
 {
     $application = '';
     if (strpos($uri, '://')) {
         list($application, $uri) = explode('://', $uri);
     }
     //获取入口文件地址
     if (empty($application)) {
         $base = url::scriptname();
     } else {
         $base = zotop::application($application, 'url') . '/' . zotop::application($application, 'base');
         $base = url::decode($base);
     }
     //uri处理
     if ($u = explode('/', trim($uri, '/'))) {
         //获取namespace 和 arguments
         $namespace = array_slice($u, 0, 3);
         $namespace = implode('/', $namespace);
         $arguments = array_slice($u, 3);
         //namespace切换
         $namespace = zotop::filter('zotop.namespace', $namespace, &$arguments);
         foreach ($arguments as $arg) {
             $querystring .= '/' . $arg;
         }
         //querystring
         $querystring = $namespace . $querystring;
         $querystring = empty($querystring) ? '' : '/' . $uri;
         $querystring .= empty($suffix) ? '' : $suffix;
     }
     //处理id/5/n/6 形式的参数
     if (!is_array($params)) {
         $args = explode('/', $params);
         while ($key = array_shift($args)) {
             $params[$key] = array_shift($args);
         }
     }
     if (is_array($params) && !empty($params)) {
         if (strpos($querystring, '?')) {
             $querystring .= '&' . http_build_query($params);
         } else {
             $querystring .= '?' . http_build_query($params);
         }
     }
     //组装url
     $url = $base . $querystring . $extra;
     $url = url::clean($url);
     return $url;
 }
Пример #3
0
 /**
  * 根据参数生成完整的URL,如:url::build('zotop/index/default',array('id'=>'1'))
  *
  * @param string 		$uri 		一般由{app}://{module}/{controller}/{action}组成
  * @param array|string 	$params 	动作参数 ,一般为数组
  * @param array|string 	$arguments 	URL参数 ,一般为数组
  * @param string 		$fragment	 	锚点
  * @return string
  */
 public static function build($uri, $params = null, $arguments = '', $fragment = '')
 {
     $uri = trim($uri, '/');
     $app = '';
     if (strpos($url, '://') !== false) {
         $u = explode('://', $uri);
         $app = $u[0];
         $uri = $u[1];
     }
     //获取入口文件地址
     if (empty($app)) {
         $base = url::scriptname();
     } else {
         $base = zotop::applicationes($app, 'url') . '/' . zotop::applicationes($app, 'base');
     }
     //获取module/controller/action
     if ($u = explode('/', trim($uri, '/'))) {
         $namespace = implode('/', array_slice($u, 0, 3));
     }
     //处理id/5/n/6 形式的参数
     if (!is_array($params)) {
         $args = array();
         $array = explode('/', $params);
         while ($key = array_shift($array)) {
             $args[$key] = array_shift($array);
         }
         $params = $args;
     }
     //合并参数
     $str = '';
     foreach ($params as $key => $value) {
         $str .= '/' . rawurlencode($value);
     }
     //组装url
     $url = $base . '/' . $namespace . $str . $fragment;
     $url = url::clean($url);
     return $url;
 }
Пример #4
0
 /**
  * 返回url中的页面名称, 如:/zotop/admin
  *
  * @return string
  */
 public static function dirname()
 {
     $scriptname = url::scriptname();
     $pathinfo = pathinfo($scriptname);
     return $pathinfo['dirname'];
 }
Пример #5
0
 /**
  * 获取当前应用的url
  *
  * @return string 如:<install>/system/admin
  */
 public static function application($id = '')
 {
     if (empty($id)) {
         return dirname(url::scriptname());
     }
     $url = zotop::application($id, 'url');
     if ($url[0] !== '/' && strpos($url, '://') === false) {
         $url = url::root() . '/' . $url;
     }
     return $url;
 }