首页 > codeigniter框架中的继承问题

codeigniter框架中的继承问题

初学ci框架,请讲解一下parent::__construct();这句什么意思,它的作用是什么,为什么在很多class中都会看到这句。谢谢。

class test extends CI_Controller {

        function __construct() {
                parent::__construct();
        }

        function index() {

                $this->load->view('test_view');
        }
}

这个是PHP的问题,不是CI的问题。
其他语言比如java,子例在实例化时会默认调用父类的无参构造函数(若父类显示定义构造函数并且无无参构造函数继承时子类也得显示调用。)
php似乎没这特性,所以为了继承父类的一些特性,在子类中显式说明调用父类的构造方法。


CI是一个面向对象编程的PHP框架,这里的test(建议大写)是一个类,继承自CI_Controller, __construct是这个test的构造方法,parent::__construct()表示执行父类的构造方法,具体有就是CI_Controller__construct方法,源码位于框架目录下的/system/core/Controller.php,你可以看下,

/**
     * Class constructor
     *
     * @return  void
     */
    public function __construct()
    {
        self::$instance =& $this;

        // Assign all the class objects that were instantiated by the
        // bootstrap file (CodeIgniter.php) to local class variables
        // so that CI can run as one big super object.
        foreach (is_loaded() as $var => $class)
        {
            $this->$var =& load_class($class);
        }

        $this->load =& load_class('Loader', 'core');
        $this->load->initialize();
        log_message('info', 'Controller Class Initialized');
    }

可以抽空了解下PHP面向对象编程,应该会对你有所帮助


你可以理解成 你的这个class在初始化的时候执行了一次父类里面的初始化方法

【热门文章】
【热门文章】