用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7759|回复: 3
收起左侧

ci源码分析--libraries/Controller

[复制链接]
发表于 2009-3-11 11:51:43 | 显示全部楼层 |阅读模式
PHP复制代码
 
<?php  if ( ! defined('BASEPATH')) exit('不允许直接访问');
class Controller extends Base {
var $_scaffolding = FALSE;
var $_scaff_table = FALSE;
 
function Controller()
{
  parent::Base();
  $this->_initialize();
  log_message('debug', "Controller类初始化成功");
}
//初始化控制器
function _initialize()
{
  //载入系统必须的类,方便子类通过$this调用
  $classes = array(
       'config' => 'Config',
       'input'  => 'Input',
       'benchmark' => 'Benchmark',
       'uri'  => 'URI',
       'output' => 'Output',
       'lang'  => 'Language',
       'router' => 'Router'
       );  
  foreach ($classes as $var => $class)
  {
   $this->$var =& load_class($class);
  }
  //载入loader类,这个类的功能是多个类的装载器,觉得autoloader意义不大,暂时去掉了
  if (floor(phpversion()) >= 5)
  {
   $this->load =& load_class('Loader');
  }
  else
  {
   //因为php4对象是拷贝一份,所以这里和php5做一下兼容
   foreach (array_keys(get_object_vars($this)) as $attribute)
   {
    if (is_object($this->$attribute))
    {
     $this->load->$attribute =& $this->$attribute;
    }
   }
  }
}
 
//初始化脚手架
function _scaffolding()
{
  if ($this->_scaffolding === FALSE OR $this->_scaff_table === FALSE)
  {
   show_404('脚手架不能用');
  }
 
  $method = ( ! in_array($this->uri->segment(3), array('add', 'insert', 'edit', 'update', 'view', 'delete', 'do_delete'), TRUE)) ? 'view' : $this->uri->segment(3);
 
  require_once(BASEPATH.'scaffolding/Scaffolding'.EXT);
  $scaff = new Scaffolding($this->_scaff_table);
  $scaff->$method();
}
 
}
 
复制代码
 楼主| 发表于 2009-3-11 11:56:46 | 显示全部楼层
Controller类虽然不太长,但是所有的控制器都从这里继承,而大部分的mvc功能都是以他为起点,不过具体的函数在loader里面设定的
发表于 2009-5-9 14:20:44 | 显示全部楼层
顶顶顶。
发表于 2011-1-30 14:50:32 | 显示全部楼层
狂顶一下

本版积分规则