php延迟静态绑定实例分析

php延迟静态绑定:指类的self,不是以定义时为准,而是以计算时的运行结果为准。先看一个实例

<?php header("content-type:text/html;charset=utf-8"); class Human{ public static function hei(){ echo "我是父类的hei()方法"; } public function say(){//如果子类调用父类的say()方法,则 self::hei();//这里调用的是父类的hei()方法 static::hei(); //这里调用子类的hei()方法,如果子类不存在hei()方法,则调用父类的 } } class Stu extends Human{ public static function hei(){ echo "我是子类的hei()方法"; } } $stu = new Stu(); $stu->say(); ?>

说明:

(1)子类实例化对象 $stu 调用say方法时,是在父类Human内运行的,所以,say()里的self::hei()是调用父类的hei()方法。

(2)static::方法名():使用static关键词,则首先是在子类里查找该方法;如果找不到,则到父类中查找。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/dde139b52823f2641a655ac19c7d868c.html