类的继承,多态及抽象类
PHP内核将类的继承实现放在了”编译阶段”,因此使用VLD生成中间代码时并没有关于继承的相关信息。
整个继承的过程是以类结构为中心,当继承发生时,程序会先处理所有的接口。
在继承过程中,除了常规的函数合并后,还有魔术方法的合并。
多态顾名思义,多态即多种形态,相同方法调用实现不同的实现方式。
PHP中关键点在于类型提示的实现。
类型提示的实现:
第一步:判断参数是否为对象,使用宏Z_TYPE_P,如果是转二步,否则跳到其它情况
第二步:获取类的类型验证信息,调用了Zend_verify_arg_class_kind函数,
第三步:判断是否为指定类的实例。
第四步:如果不指定类的实例,程序会调用zend_verify_arg_error 报错。
接口的实现
接口也可以和类一样实现继承,并且只能是一个接口继承另一个接口。
抽象类
抽象类仅提供一个类的部分实现。