| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | 
							- <?php
 
- // +----------------------------------------------------------------------
 
- // | ThinkPHP [ WE CAN DO IT JUST THINK ]
 
- // +----------------------------------------------------------------------
 
- // | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
 
- // +----------------------------------------------------------------------
 
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
 
- // +----------------------------------------------------------------------
 
- // | Author: liu21st <liu21st@gmail.com>
 
- // +----------------------------------------------------------------------
 
- namespace think\route;
 
- class RuleName
 
- {
 
-     protected $item = [];
 
-     protected $rule = [];
 
-     /**
 
-      * 注册路由标识
 
-      * @access public
 
-      * @param  string   $name      路由标识
 
-      * @param  array    $value     路由规则
 
-      * @param  bool     $first     是否置顶
 
-      * @return void
 
-      */
 
-     public function set($name, $value, $first = false)
 
-     {
 
-         if ($first && isset($this->item[$name])) {
 
-             array_unshift($this->item[$name], $value);
 
-         } else {
 
-             $this->item[$name][] = $value;
 
-         }
 
-     }
 
-     /**
 
-      * 注册路由规则
 
-      * @access public
 
-      * @param  string   $rule      路由规则
 
-      * @param  RuleItem $route     路由
 
-      * @return void
 
-      */
 
-     public function setRule($rule, $route)
 
-     {
 
-         $this->rule[$route->getDomain()][$rule][$route->getMethod()] = $route;
 
-     }
 
-     /**
 
-      * 根据路由规则获取路由对象(列表)
 
-      * @access public
 
-      * @param  string   $name      路由标识
 
-      * @param  string   $domain   域名
 
-      * @return array
 
-      */
 
-     public function getRule($rule, $domain = null)
 
-     {
 
-         return isset($this->rule[$domain][$rule]) ? $this->rule[$domain][$rule] : [];
 
-     }
 
-     /**
 
-      * 获取全部路由列表
 
-      * @access public
 
-      * @param  string   $domain   域名
 
-      * @return array
 
-      */
 
-     public function getRuleList($domain = null)
 
-     {
 
-         $list = [];
 
-         foreach ($this->rule as $ruleDomain => $rules) {
 
-             foreach ($rules as $rule => $items) {
 
-                 foreach ($items as $item) {
 
-                     $val['domain'] = $ruleDomain;
 
-                     foreach (['method', 'rule', 'name', 'route', 'pattern', 'option'] as $param) {
 
-                         $call        = 'get' . $param;
 
-                         $val[$param] = $item->$call();
 
-                     }
 
-                     $list[$ruleDomain][] = $val;
 
-                 }
 
-             }
 
-         }
 
-         if ($domain) {
 
-             return isset($list[$domain]) ? $list[$domain] : [];
 
-         }
 
-         return $list;
 
-     }
 
-     /**
 
-      * 导入路由标识
 
-      * @access public
 
-      * @param  array   $name      路由标识
 
-      * @return void
 
-      */
 
-     public function import($item)
 
-     {
 
-         $this->item = $item;
 
-     }
 
-     /**
 
-      * 根据路由标识获取路由信息(用于URL生成)
 
-      * @access public
 
-      * @param  string   $name      路由标识
 
-      * @param  string   $domain   域名
 
-      * @return array|null
 
-      */
 
-     public function get($name = null, $domain = null, $method = '*')
 
-     {
 
-         if (is_null($name)) {
 
-             return $this->item;
 
-         }
 
-         $name = strtolower($name);
 
-         $method = strtolower($method);
 
-         if (isset($this->item[$name])) {
 
-             if (is_null($domain)) {
 
-                 $result = $this->item[$name];
 
-             } else {
 
-                 $result = [];
 
-                 foreach ($this->item[$name] as $item) {
 
-                     if ($item[2] == $domain && ('*' == $item[4] || $method == $item[4])) {
 
-                         $result[] = $item;
 
-                     }
 
-                 }
 
-             }
 
-         } else {
 
-             $result = null;
 
-         }
 
-         return $result;
 
-     }
 
-     /**
 
-      * 清空路由规则
 
-      * @access public
 
-      * @return void
 
-      */
 
-     public function clear()
 
-     {
 
-         $this->item = [];
 
-         $this->rule = [];
 
-     }
 
- }
 
 
  |