首页 > 代码库 > PHP延迟静态绑定
PHP延迟静态绑定
php5.3已经开始支持延迟静态绑定。
延迟静态绑定指的是在父类中获取子类的最终状态。在父类中,如果出现self关键字,被子类继承后,这个self值的还是父类而不是子类。
如果在父类中出现了self关键字,并且子类继承了含有self的这段代码,那么需要考虑静态延迟绑定。在父类中使用static代替self
如下例:
<?php class A{ public static $a=1; public function test(){ echo self::$a;//自身的属性a }}class B extends A{ public static $a = 2;}$m = new B();$m->test();//最终输出了1,也就是父类的属性a?>
要想在父类中test方法中实现取到子类本身的属性a,需要用static代替self
<?php class A{ public static $a=1; public function test(){ //echo self::$a; echo static::$a;//延迟静态绑定,绑定到子类 }}class B extends A{ public static $a = 2;}$m = new B();$m->test();//输出子类中的2?>
PHP延迟静态绑定
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。