写在前面: 既然是CI学习,固然要由浅入深,因此在说restful改造方案以前,先说说CI框架自己的哪些事儿。php
CI 框架总体属于单例模式,为何这么说?要是各位有心,在应用控制器中输出一下 $this 这个对象就会发现,CI框架的核心类实例基本都以属性的形式赋给了 $this 这个对象。 数组
那 $this 这个对象有是什么? 其实他就是核心类(system/core中的类)中controller的实例,有心的同窗看看这个类的实现方式就会知晓,CI将其余核心类的实例都赋值到了controller的属性上。因此,使用CI框架的核心就是要了解如何使用控制器对象即 $this 这个对象。restful
下面咱们作一个小测试看看如何学会使用 $this 这个对象。 咱们循序渐进的来作,首先咱们再 application/controller 下新建一个控制器类 本例使用:Index.phpapp
<?php defined('BASEPATH') OR exit('No direct script access allowed'); /* * 类名符合CI命名规则,与文件名一致 */ class Index extends CI_Controller{ /* * 在本类里咱们建立了一个默认方法 * 在index方法中咱们打印了$this这个对象 */ public function index(){ var_dump($this); exit(); } }
如今咱们访问这个方法 http://hostname/index.php/index(控制器名)/index(方法名) 发现了吗?这个方法的输出和我上面的图片同样。 你会发现CI框架全部的核心类实例都以属性的形式附在控制器对象里面 因此咱们就能够像调用普通属性同样调用他们。 例:框架
defined('BASEPATH') OR exit('No direct script access allowed'); /* * 类名符合CI命名规则,与文件名一致 */ class Index extends CI_Controller{ /* * 仍是index方法 */ public function index(){ //加载试图文件 $this->load->view('视图文件名'); //加载扩展类 $this->load->library('扩展类名'); //调用配置文件属性 $config = $this->config->item('配置文件$config数组键名'); ... 其余功能本身发掘 } }
那咱们从入口文件又是怎么实例化了这个controller并调用了index这个类的index方法呢,咱们用一个图来展现学习
在CodeIgniter.php中 CI使用call_user_func_array(array(&$CI, $method), $params);来调用应用类。测试
了解了如何使用控制器,这也只是了解了如何使用CI框架自己,和咱们主题关系并不大,但要实现对CI框架的改造,咱们首先要对框架自己有必定了解,有了这些基础咱们就能够开始来修改这个框架让它变成一个符合restful标准的框架。今天先写到这里,以后的系列文章会记录个人改造过程。this