欢迎来到[自学php网] ①群 AG亚游集团

AG亚游集团 > php专栏 > php综合实列 >

PHP后期静态绑定

来源:未知 ?? 时间:2018-12-25 14:03?作者:小飞侠

[导读] 从php5.3开始,php增加了一个叫后期绑定的功能,用于在继承范围内引用静态调用的类 该功能从语言内部角度考虑北命名为“后期静态绑定”;“后期绑定”意思说:static::不再被解析...

从php5.3开始,php增加了一个叫后期绑定的功能,用于在继承范围内引用静态调用的类

该功能从语言内部角度考虑北命名为“后期静态绑定”;“后期绑定”意思说:static::不再被解析为定义当前方法所在的类,而是在实际运行时计算的,也可以成为“静态绑定”;因为他可以用于(但不限于静态方法的调用)。

self::的限制

使用self::或者_class_对当前类的静态引用,取决于定义当前方法所在的类

例子:

class A {
  public static function who() {
    echo __CLASS__;
  }
  public static function test() {
    self::who();
  }
}
class B extends A {
  public static function who() {
    echo __CLASS__;
  }
}
B::test(); /A

打印结果:

A

后期静态绑定的用法

后期静态绑定试图通过引入一个关键字表示运行时最初调用的类来绕过限制。简单的说,这个关键字能够让你在上述中调用test()时引用的类是B而不是A。最终决定不引用新的关键字,而是使用已经预留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

后期静态绑定的处理方式解决了以往完全没有解决的静态调用,另外一方面,如果静态调用使用parent::或者self::将转发调用信息

<?php
class A {
  public static function foo() {
    static::who();
  }
  public static function who() {
    echo __CLASS__."\n";
  }
}
class B extends A {
  public static function test() {
    A::foo();
    parent::foo();
    self::foo();
  }
  public static function who() {
    echo __CLASS__."\n";
  }
}
class C extends B {
  public static function who() {
    echo __CLASS__."\n";
  }
}
C::test();
?>

打印结果:

A
C
C

例子:

<?php
class a {
 static public function test() {
  print get_called_class();
 }
}
class b extends a {
}
a::test();
b::test();
?>

打印结果:

a
b

特别声明:

get_called_class();获得类的名称静态方法中调用

最新文章

点击排行

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号@版权所有AG亚游集团

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

浙媒:“辫子哥”满血回归 比赛还有悬念吗? 巴基斯坦总理:中巴经济走廊建设正加速推进 小伙差1号中体彩2亿揽456万:提前圆买房梦-票 五月相约乐卡克北京女子精英赛 期待美丽的你 火箭打勇士铁定没戏!2冠功臣已经给判了死刑 今起微信还信用卡要收费了!网友:一顿饭钱没了 直击|拼多多黄峥:负面对销售额没影响 可能还提高了 从汇丰赛崩盘到哨兵赛大赢 达斯汀只因为有这根线 李晓峰中将已不再担任中央军委政法委书记 中国约1/4卵巢癌患者存在BRCA基因突变 专家出招 张连伟:中巡赛有世界积分变化大 助球手走向世界 孟庆斌任山东临沂市委副书记 张术平已任烟台书记
卡戴珊为新生爱女取名 她想揭露怎样的真相? 富力官方解释斯托赛后倒竖拇指动作:在表达歉意 外媒:移民问题将长期驱动西方政治 棘手难处理 困惑时代中仍求新突破 柯洁与百灵杯缘分再续 墨西哥官员:坠机共载有97名乘客和4名机组人员 数读政府工作报告:三个“6000万”筑牢民生保障 赵睿21分易建联14+12 广东大胜新疆大比分2-0 云南勐腊县发生3.1级地震 震源深度5千米 我军歼10C开始战斗值班 美媒:跨区训练或指向台湾 罗永浩的次世代:锤子科技不可抗拒的商业冒险 中国彩虹无人机为何发展如此快 全靠这项技术在支持 拼多多CEO黄峥:对路演火爆有预期 上市是为更透明
国务院副总理刘鹤连续有新职 外媒:家乐福有意将中国业务出售给欧尚、阿里巴巴 港股未回稳料维持30000至31000大区间波动 8张图告诉你如何到人民大会堂听总理作报告(图) 云计算第四次写入政府工作报告 已成中国经济新动能 30+12!险导演马刺绝地求生 这是NBA最硬的男人 川航航班遇故障机组完成一次史诗级壮举 网友怒赞 暴走漫画内部整顿:视频节目下线 多个App无限期关停 一批新规8月实施 我们都将收到这样一条短信账单 过年摆地摊赚10万 广东水库抓到一只女鬼 女的学什么手艺有前途 不怕死想发财的兄弟进 AG亚游集团