Example #1
0
 /**
  * 实例化对象
  * @param  string  $class 类名称
  * @param  array   $param 实例化类对象参数
  * @return Object|null  实例化后的类对象,如果找不到此类,则返回null
  */
 public function getComponent($class, $param = array())
 {
     $obj = null;
     $is_import = self::import($class);
     if ($is_import && (class_exists($class, false) || interface_exists($class, false))) {
         $m = new ReflectionClass($class);
         if ($m && $m->hasMethod('getInstance') && $m->getMethod('getInstance')->isPublic()) {
             if ($param && $m->getNumberOfParameters()) {
                 $obj = call_user_func_array(array($class, 'getInstance'), $param);
             } else {
                 $obj = call_user_func(array($class, 'getInstance'));
             }
         } elseif ($m) {
             $obj = $param ? new $class($param) : new $class();
         }
         if ($obj && $m->hasMethod('init') && $m->getMethod('init')->isPublic()) {
             $obj->init();
         }
         $this->_hinstance[$class] = $obj;
     }
     return $obj;
 }