Пример #1
0
 /**
  * 规范访问重写请求Url
  */
 protected function formatRequestURI()
 {
     //访问主域名
     if ($this->scriptUrl == '/') {
         return true;
     }
     //双//等处理
     if (String::exist($this->scriptUrl, '//')) {
         $this->scriptUrl = preg_replace('/\\/+/is', '/', $this->scriptUrl);
     }
     // 重写请求Url以横杠结尾时处理
     if (String::substr($this->scriptUrl, -1, 1) == '/') {
         $this->scriptUrl = String::substr($this->scriptUrl, 0, -1);
     }
     //有更改过scriptUrl,重新定位
     if ($this->scriptUrl != Param::getScriptUrl()) {
         $queryString = Param::getQueryString();
         Header::redirect($this->scriptUrl . ($queryString ? '?' . $queryString : ''));
     }
     return true;
 }
Пример #2
0
 /**
  * 将路由组件转换到控制器方法
  * 
  * eg. add-discuss=>addDiscuss
  * 
  * @param string $string路由组件
  */
 public static function mapRouteSegToMethod($string)
 {
     if (!String::exist($string, self::ROUTE_URL_SEP)) {
         return $string;
     }
     $segInfo = explode(self::ROUTE_URL_SEP, $string);
     $result = array(array_shift($segInfo));
     //第一个首字符大写
     foreach ($segInfo as $part) {
         $result[] = ucfirst($part);
     }
     return implode('', $result);
 }
Пример #3
0
 /**
  * 把键值转换成嵌套数组值
  * 
  * 数组 + 运算符附加右边数组元素,但是不会覆盖重复的键值。
  * 
  * @param string $key
  * @param string $value
  */
 private function buildNestArray($key, $value, $parent = array())
 {
     if (String::exist($key, self::KEY_SEP)) {
         $keyInfo = explode(self::KEY_SEP, $key);
         $valueArray = array();
         $keyNow = array_shift($keyInfo);
         if (!isset($parent[$keyNow])) {
             $parent[$keyNow] = array();
         }
         //递归从第一级创建,加法运算有效
         $parent[$keyNow] += self::buildNestArray(implode('.', $keyInfo), $value, $parent[$keyNow]);
     } else {
         $parent[$key] = $value;
     }
     return $parent;
 }
Пример #4
0
 /**
  * 发送一个Get请求
  * @param string $url 请求网址
  * @param array $param 请求参数
  */
 protected function getUrl($url, $param = array())
 {
     if ($param && is_array($param)) {
         $url = $url . (String::exist($url, '?') ? '&' : '?') . http_build_query($param);
     }
     return $this->request($url);
 }