[李景山php] 深入理解PHP内核[读书笔记]--第五章:类和面向对象 --类的继承,多态及抽象类

类的继承,多态及抽象类


PHP内核将类的继承实现放在了”编译阶段”,因此使用VLD生成中间代码时并没有关于继承的相关信息。

整个继承的过程是以类结构为中心,当继承发生时,程序会先处理所有的接口。

在继承过程中,除了常规的函数合并后,还有魔术方法的合并。

多态顾名思义,多态即多种形态,相同方法调用实现不同的实现方式。

PHP中关键点在于类型提示的实现。

类型提示的实现:


第一步:判断参数是否为对象,使用宏Z_TYPE_P,如果是转二步,否则跳到其它情况
第二步:获取类的类型验证信息,调用了Zend_verify_arg_class_kind函数,
第三步:判断是否为指定类的实例。
第四步:如果不指定类的实例,程序会调用zend_verify_arg_error 报错。

接口的实现


接口也可以和类一样实现继承,并且只能是一个接口继承另一个接口。

抽象类


抽象类仅提供一个类的部分实现。

你可能感兴趣的:(php,内核)