PHP中的延迟静态绑定

 时间:2024-11-01 22:46:21

1、php5.3已经开始支持延迟静态绑定。延迟静态绑定指的是在父类中获取子类的最终状态。在父类中,如果出现self关键字,被子类继承后,这个self值的还是父类而不是子类。如果在父类中出现了self关键字,并且子类继承了含有self的这段代码,那么需要考虑静态延迟绑定。在父类中使用static代替self.说到底,self到底表示什么?self用在类中,引用自身的静态成员变量,表示的就是类名,完全可以被类名替换掉。被子类继承之后,self还是表示的父类名,而不是子类self了

2、<?phpclass 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?>

3、要想在父类中test方法中实现取到子类本身的属性a,需要用static代替self<?phpclass A{ public static $a=1; public function test(){ echo static::$a;//自身的属性a }}class B extends A{ public static $a = 2;}$m = new B();$m->test();//最终输出了1,也就是父类的属性a?>self用在类中,引用自身的静态成员变量,它就是表示类名,完全可以用类名替换掉。所以继承之后self还是父类的类名,而不是子类的类名。延迟静态绑定用static来表示最终类。

  • 软件测试人员必备七心
  • Python教程:[39]从文件引用自定义类函数
  • 如何在Win10通过FreeSSHd工具搭建Telnet服务器
  • Linux常用的几个命令整理
  • 怎样改变 linux 的 ip 地址
  • 热门搜索
    神秘莫测的意思 shampoo是什么意思 1582年发生了什么 做梦生孩子是什么意思 强聒不舍的意思 rip是什么意思 手电筒什么牌子好 什么事每人每天都必须认真的做 cf戒指有什么用 什么是企业价值观