PHP父类调用子类方法,CodeIgniter中DB的继承关系
某厂面试归来,发现自己落伍了!>>> 先看几行代码: <!-- lang: php --> class A { private $b; function __construct($a){ $this->b = $a; } function func1(){ var_dump($this->b); } function func2(){ $this->funcb(); } } class B extends A { function funcb(){ var_dump("b"); } } $a = new B('a'); $a->func1(); $a->func2(); 这几行代码是没有错误的,在父类中调用子类的方法,子类实例化之后可以正常工作。 CI的DB部分正是使用了这种方式来封装数据库操作。 CI的DB函数的写法正是先加载 CI_DB_driver 这个基类,然后检查active record是否开启,如果开启则 <!-- lang: php --> class CI_DB_active_record extends CI_DB_driver 然后 <!-- lang: php --> class CI_DB extends CI_DB_active_record 否则 <!-- lang: php --> class CI_DB extends CI_DB_driver