CodeIgniter是一款现在很流行的php框架,小巧高效且易用。下面就其核心的流程进行一个解析,先看下段代码,为简单起见,下面的程序是放在一个文件中的。

 
  
  1. class Obj 
  2.     // 静态成员,用以保存当前类的实例 
  3.     private static $instance
  4.  
  5.     // 构造函数中完成了loader对象的加载 
  6.     public function __construct() 
  7.     { 
  8.         self::$instance = $this;// 保存了当前类的实例 
  9.         $this->load = new Loader(); 
  10.     } 
  11.  
  12.     // 静态方法返回类的实例 
  13.     public static function app() 
  14.     { 
  15.         return self::$instance
  16.     } 
  17.  
  18. class Loader 
  19.     // 库加载方法,最核心的部分 
  20.     public function library($class_name
  21.     { 
  22.         // 动态的实例化类,并将实例存放到Obj对象的成员中,该成员也是动态创建的 
  23.         Obj::app()->$class_name = new $class_name(); 
  24.     } 
  25.  
  26. // ------------------------------------------------------------------ 
  27.  
  28. // 测试 
  29. // Test类可以看作是视图层 
  30. class Test 
  31.     public function display() 
  32.     { 
  33.         echo "run display"
  34.     } 
  35.  
  36. // APP可以看为是控制器层 
  37. class APP extends Obj 
  38.     public function run() 
  39.     { 
  40.         // 加载Test类后调用Test类的display方法。 
  41.         // 实际上,所有的类的调用方式都是一致的,都是先加载,再用对应的名取得对象 
  42.         $this->load->library('Test'); 
  43.         $this->Test->display(); 
  44.     } 
  45.  
  46. // ------------------------------------------------------------------ 
  47.  
  48. // 执行 
  49. $APP = new APP(); 
  50. $APP->run(); 

输出结果:

 
  
  1. run display 

第26行是整个框架中最核心的一行。充分的利用了php可以动态创建类成员的这一特性,将类的实例“注入”到Obj对象中,完成了调用方式的统一,简洁明快且适用性极广。