コード例 #1
0
ファイル: Router.php プロジェクト: jackxiaoxiaoxun/emmvc
 /**
  * Set the route mapping
  *
  * This function determines what should be served based on the URI request,
  * as well as any "routes" that have been set in the routing config file.
  *
  * @access	private
  * @return	void
  */
 function _set_routing()
 {
     // Are query strings enabled in the config file?  Normally CI doesn't utilize query strings
     // since URI segments are more search-engine friendly, but they can optionally be used.
     // If this feature is enabled, we will gather the directory/class/method a little differently
     $segments = array();
     if ($this->config['enable_query_strings'] === TRUE and isset($_GET[$this->config['controller_trigger']])) {
         if (isset($_GET[$this->config['ns_trigger']]) and isset($this->routes[trim($this->uri->_filter_uri($_GET[$this->config['ns_trigger']]))]['ns'])) {
             $this->set_ns($this->routes[trim($this->uri->_filter_uri($_GET[$this->config['ns_trigger']]))]['ns']);
         }
         if (isset($_GET[$this->config['controller_trigger']])) {
             $this->set_class($seg = trim($this->uri->_filter_uri($_GET[$this->config['controller_trigger']])));
             $segments[] = $seg;
         }
         if (isset($_GET[$this->config['function_trigger']])) {
             $this->set_method(trim($this->uri->_filter_uri($_GET[$this->config['function_trigger']])));
             $segments[] = $this->fetch_method();
         }
     }
     // Set the default controller so we can display it in the event
     // the URI doesn't correlated to a valid controller.
     $this->default_controller = (!isset($this->routes['default_controller']) or $this->routes['default_controller'] == '') ? FALSE : strtolower($this->routes['default_controller']);
     // Were there any query string segments?  If so, we'll validate them and bail out since we're done.
     if (count($segments) > 0) {
         return $this->_validate_request($segments);
     }
     // Fetch the complete URI string
     $this->uri->_fetch_uri_string();
     // Is there a URI string? If not, the default controller specified in the "routes" file will be shown.
     if ($this->uri->uri_string == '') {
         return $this->_set_default_controller();
     }
     // Do we need to remove the URL suffix?
     $this->uri->_remove_url_suffix();
     // Compile the segments into an array
     $this->uri->_explode_segments();
     // Parse any custom routing that may exist
     $this->_parse_routes();
     // Re-index the segment array so that it starts with 1 rather than 0
     $this->uri->_reindex_segments();
 }