php 构造函数的继承

来源:互联网 发布:openstack网络架构图 编辑:程序博客网 时间:2024/06/05 04:46

出现问题:




test类继承C  test不包含构造函数,C类继承B 显示的调用父级的构造函数,在controller控制器中定义了如果存在_init方法则执行_init

在这个背景下,C类定义的get_c 被test的_init调用,如果parent::__construct 在初始化$c之前,在test中是获取不到数据的  这时的构造函数执行顺序是:


test 中不存在__construct  执行继承的C的构造函数,C显示调用B,B显示调用A,A显示调用Controller的构造函数,在顶级构造函数中定义了_init先行

test._init => controller.__construct => A.__construct => B.__construct => C.__construct

在执行test_init 之前 C.__construct 中 parent::__construct是没有初始化化的  所以get_c 获取不到数据




php 单继承

1 __construct 优先

2子类存在__construct  重构父类的构造函数

3子类存在__construct,调用父类构造函数 显示的调用

4子类不存在__construct 隐性调用父类构造函数 

0 0