CI框架源码阅读---------Router.php
[php]<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* CodeIgniter
*
* An open source application development framework for PHP 5.1.6 or newer
*
* @package CodeIgniter
* @author ExpressionEngine Dev Team
* @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
* @license http://codeigniter.com/user_guide/license.html
* @link http://codeigniter.com
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
/**
* Router Class
*
* Parses URIs and determines routing
*
* @package CodeIgniter
* @subpackage Libraries
* @author ExpressionEngine Dev Team
* @category Libraries
* @link http://codeigniter.com/user_guide/general/routing.html
*/
class CI_Router {
/**
* Config class
* 配置
* @var object
* @access public
*/
var $config;
/**
* List of routes
* 路由列表,值来自APPPATH/config/route.php
* @var array
* @access public
*/
var $routes = array();
/**
* List of error routes
* 错误路由列表
* @var array
* @access public
*/
var $error_routes = array();
/**
* Current class name
* URI中的Controller
* @var string
* @access public
*/
var $class = '';
/**
* Current method name
* URI中显示调用的函数,默认为index()
* @var string
* @access public
*/
var $method = 'index';
/**
* Sub-directory that contains the requested controller class
* URI中现实的目录信息
* @var string
* @access public
*/
var $directory = '';
/**
* Default controller (and method if specific 确定的)
* 默认控制器
* @var string
* @access public
*/
var $default_controller;
/**
* Constructor
*
* Runs the route mapping function.
* 加载并实例化config类和URI类
*/
function __construct()
{
$this->config =& load_class('Config', 'core');
$this->uri =& load_class('URI', 'core');
log_message('debug', "Router Class Initialized");
}
// --------------------------------------------------------------------
/**
* 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.
* 设置默认的路由信息,如果不存在控制器信息,则根据routes.php的设置来加载默认的控制器,
*
* @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
// 如果项目是允许通过query_strings的形式,并且有通过$_GET的方式请求控制器的话,则以query_string形式路由
// 上面这里为什么还要判断有没有通过get的方式指定控制器?
// 其实是因为如果允许query_string的形式请求路由,但是却没有在APPPATH/config/config.php下配置
// controller_trigger,function_trigger,directory_trigger这三项的话,也是不能使用query_strings形式的
// 此时,我们依然会采用“段”的形式。
$segments = array();
if ($this->config->item('enable_query_strings') === TRUE AND isset($_GET[$this->config->item('controller_trigger')]))
{
//取得目录名,控制名和方法名传递的变量名。这三项都是在config/config.php里面定义的。
if (isset($_GET[$this->config->item('directory_trigger')]))
{
$this->set_directory(trim($this->uri->_filter_uri($_GET[$this->config->item('directory_tri
补充:Web开发 , php ,
- 更多php疑问解答:
- php使用imagick将image图片转化为字符串模式
- php通过gd实现图片图片转换为字符图代码
- PHP把图片转base64代码,php把base64代码转换为图片并保存
- PHP把图片base64转换成图片并保存成文件
- wordpress问题<?php if(have_posts()) : ?>
- 建设一个搜索类网站php还是jsp,数据库那个好
- 没理由啊 php代码无法执行,貌似有语法错误。。。
- 关于PHP 和API 的一段代码不懂啊不懂,请高手指点! 这是淘宝API的
- php语言中,序列化到底在那里使用?它的优势是什么?劣势是什么?
- PHP函数等于或等于应该怎么表达
- 请教php高手,解决basename函数和mb_substr函数处理中文文件名称的解决方法,在上传文件时,总是出现乱码
- .NET,PHP,JAVA,JS优秀点分别是?
- 织梦cms 在环境监测的时候 wamp5 gd不支持 是为什么。;extension=php_gd2.dll这一句我删除了还是不显示?
- 我想学PHP。1.应安装什么编程工具? 2. 装LIUNX系统是装简易的还是?什么版本的?3.还应安装什么?
- <?php 和 <? 有什么区别