PHP中的后期静态绑定(Late Static Bindings )
来源:互联网 发布:寒假工代理知乎 编辑:程序博客网 时间:2024/05/21 07:10
今天看laravel框架源码时,发现一个”static::”这样的语法,非常好奇(本人没经过系统培训,勿喷基础知识不行),于是就上php.net查了一下,原来这涉及了一个php5.3版本新增的静态绑定的语法, 好了,不废话,开始做笔记。
class A{ public static function func1(){ echo __CLASS__.PHP_EOL; } public static function test(){ self::func1(); } }class B extend A{ public static function func1(){ echo __CLASS__.PHP_EOL; //__CLASS__是当前类的名称 }}B::test();
结果:A
但是,既然B继承了A,并重写了A的func1,那么如果想让test中执行的是B中的func1要怎么做呢?于是,php5.3使用了预留的static关键字,将上述代码中的test函数改成这样:
public static function test(){ static::func1();}
结果:B
也就是说:static::实现了后期静态绑定,static::对应的变量不再是当前类的变量,而是由最终运算时动态决定的(也可以说从堆里面提取出来的关键字)。
同时,在这个学习的过程中,我还发现另外一个用法:new static() 和 new self(), 同样的,new static 就是实例化最终继承的类,而new self就是实例化当前类。
好了,顺便提一下形如这种格式的用法有三种: “self::”、”parent::”、”static::”;
0 0
- PHP中的后期静态绑定(Late Static Bindings )
- PHP static后期静态绑定
- get_called_class — 后期静态绑定("Late Static Binding")类的名称
- php 后期静态绑定的用法 static::
- static 后期静态绑定
- php 后期静态绑定
- php后期静态绑定
- php静态后期绑定
- php 后期静态绑定
- php后期静态绑定
- PHP后期静态绑定
- php 后期静态绑定 static 关键字的另一种用法
- 81. PHP 后期静态绑定
- PHP后期静态绑定测试
- php之static后期绑定/延迟绑定
- 透明模拟PHP5.3中的“迟静态绑定(Late static binding)”
- PHP 后期静态绑定之self::限制
- PHP后期静态绑定的功能
- JDBC 如何使用可滚动 可更新结果集
- jQuery 获取子元素的个数
- 模式七:适配器模式(Adapter pattern)——接口转换
- 零基础qemu模拟arm系统环境搭建
- 函数调用--函数栈
- PHP中的后期静态绑定(Late Static Bindings )
- php.ini 配置 error_log 错误信息
- maven
- 【Core Dump】核心转存 故障分析
- WordPress返回文章修改日期,自定义日期格式
- ButterKnife在横竖屏切换空指针异常的处理
- 反射总结
- Oracle ASM+11gR2安装
- POJ 1837 Balance(DP)