php后期静态绑定
2024-08-31 08:17:42
php后期静态绑定
自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类。 虽然也可以调用非静态方法,但是不会在运行时绑定。
static 不再只是简单的静态修饰关键字。而是可以像下面这样调用类的静态方法,非静态方法,为什么静态非静态要分开说呢,因为调用的效果是不一样的。
- <?php
- class A {
- public static function who () {
- echo __CLASS__ ;
- }
- public static function test () {
- static:: who (); // 后期静态绑定从这里开始
- }
- }
- class B extends A {
- public static function who () {
- echo __CLASS__ ;
- }
- }
- B :: test ();
- ?>
如上代码:B调用test方法,test方法调用who方法。而B类中重写了who方法,则实际调用的是B中的who方法,所以输出的__CLASS__是B 这就是说 static 调用的静态方法会在运行时自动判断调用谁的方法(如果7行那里是self的话,就是调用的A的who方法)。
而self则只会调用定义它时所在的类中的方法。这是static的一个区别于其它调用的一个新特性。而static调用非静态方法时则不会达到这种后期绑定的效果,所以叫后期静态绑定。
这里static和self的用法很相似,只是作用区别大。
还有就是 static只能调用静态属性。
总结:
综上所述,static关键字可以实现以下功能:
1 调用类的静态方法 有后期静态绑定效果;
2 调用类的静态属性 有后期静态绑定效果;
3 调用类的非静态方法 没有后期静态绑定效果;
4 强调一下 不可以调用非静态属性;
最新文章
- RelativeLayout的位置属性总结
- golang学习之旅:官方文档汇总
- Configure Log Shipping
- 眼见为实(1):C++基本概念在编译器中的实现
- 【枚举+数学】【HDU1271】整数对 难度:五颗星
- 天气正好,hello world!
- Gist - Fetch Usage
- textarea自适应高度,div模仿textarea可编辑实现自适应高度,placeholder使用图标
- PS 滤镜算法原理——曝光过度
- bzoj 2820 莫比乌斯反演
- Java~类,抽象类和接口
- 关于Numba开源库(Python语法代码加速处理,看过一个例子,速度可提高6倍)
- bzoj3262: 陌上花开(CDQ+树状数组处理三维偏序问题)
- 数组练习题A财务管理
- javaweb(2)之Servlet入门
- windows更改命令行cmd的字体为conlosas+微软雅黑
- Java:Swing篇,实现JList、JTextArea的自动滚动,实时刷新功能
- 希尔伯特曲线——第八届蓝桥杯C语言B组(国赛)第三题
- 前端开发工程师 - 01.页面制作 - 第1章.Photoshop切图
- Python eval 函数说明
热门文章
- DevExpress的GridControl拖拽DraopDown后计算HitInfo的RowHandle错误
- 备忘录模式(Memento)C++实现
- 移动web开发中自己遇到的三个小题及解决方法
- hdu3938 Portal 离线的并查集
- Mock Framework
- VHDL之Aggregate
- RabbitMQ学习之messageconver插件实现(Gson)
- 优动漫PAINT(clip studio paint)怎么画一幅水墨竹子图
- vc++绘图,颜色
- Nginx+php-fpm 502 504问题