zionwang 发表于 2012-4-2 15:38:14

如何加载类的时候初始化参数

$this->load->library('pay/pay_factory');我要加载的类,那么CI 如何传递初始化参数的,

原生的是这样实现的,$payment_handler = new pay_factory($pay_name,$cfg);

CI 是如何 $pay_name $cfg 这两个传递过去的? 我看了 $this->load->library 手册,第二个参数还是不明白
                               

actionbi 发表于 2012-4-2 17:34:58

本帖最后由 actionbi 于 2012-4-2 17:37 编辑

下面是BASEPATH/core/Loader.php中的内容,也就是系统核心类中CI_Loader类

把这两个参数放到数组中传递过去。

$this->load->library('pay/pay_factory',array($pay_name,$cfg));

下面是ci的源码。要么你就自己看,要么关注CI源码阅读这个帖子。近期会更新Loader类
      public function library($library = '', $params = NULL, $object_name = NULL)
      {
                if (is_array($library))
                {
                        foreach ($library as $class)
                        {
                              $this->library($class, $params);
                        }
                        return;
                }

                if ($library == '' OR isset($this->_base_classes[$library]))
                {
                        return FALSE;
                }
                if ( ! is_null($params) && ! is_array($params))
                {
                        $params = NULL;
                }

                $this->_ci_load_class($library, $params, $object_name);
      }



页: [1]
查看完整版本: 如何加载类的时候初始化参数