欢迎来到[自学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

世锦赛国羽再次高奏凯歌 何冰娇直落两局晋级 菲数千青年上街游行 抗议杜特尔特“高压政策” NASA公布火星怪诞照:陨石坑似菌状 曾有冰川流动 澳洲央行强调自己是\"稳定性之源\" 暗示利率长期不变 “射墨”写字:这类书法是胡扯 还是前卫艺术? 德国传奇球星穆勒:中超联赛很精彩 外教带来益处 李雪芮复出首胜孙瑜归队 国羽战尤杯迎甜蜜负担 脸书AI翻译主管加盟阿里达摩院 推动实时翻译应用 女子交3年水费却是隔壁的 物业要求支付千元差额 黄金短期将继续承压 新京报:是时候对海归和本土人才一视同仁了 英国脱欧后 它的海外领地该咋办?
滴滴就是否对行程录音征求意见 专家称不如安摄像 新京报:3年“不互动”政府网站 还有必要投钱吗? 美国商务部对中国产钢轮发起“双反”调查 日本两亿条个人信息遭\"暗网\"贩卖 嫌犯可能现居中国 哈登带鞋王夜店狂嗨!玩爽之后带2车妹子离开 美国国会叫停向土交付F-35战机 马蒂斯急了 中国官方力挺健身休闲产业 总规模将达3万亿 斯巴鲁曝光篡改燃效等数据 但称对汽车品质无影响 脱欧公投后移民人数暴增165% 英国人首选德国 冠军球包-“菜鸟”怀斯拜伦尼尔森赛实现美巡首胜 软银旗下的ARM据称同意收购美国公司Treasure … 芯片销售强劲 三星电子二季度利润同比增5.7%
杰克逊与北京签的是1+1合同 可打完NBA再回CBA 联合国:全球流动性收缩或引发新兴市场剧烈去杠杆 百胜中国:美税改将造成约1.6亿美元的一次性支出 政协委员痛斥:一些领导机关以抓下级代替抓自身 詹姆斯25分骑士结束连胜 乔丹双20快船抢滩前8 今天登记结婚明天就能落户海南?两部门:实现不了 4000万!曼联今夏豪挖热刺铁闸 pk巴萨巴黎抢人 泰达队员期待和最强恒大较量:并非没拿分的可能 粤媒:亚运会中国男篮将雪耻 最大对手为日韩 养殖什么不愁销路 白手起家创业好项目 怎么样白手起家 2016做什么生意有前景 AG亚游集团