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

网评:女篮不精彩但更纯粹 请为北京3连冠鼓掌 浙江一区委书记带头自我问责治水:扣3月份奖金 IMF:欧洲经济增长强劲 各国却未能抓住机会减少负债 台运动员发文反对“正名”:宁愿以中华台北出赛 意大利一名华人少年酒店游泳池溺水身亡 警方调查 俄大选电视辩论现闹剧:普京恩师之女怒泼对手 抬走!下一个!火箭取15连胜!姚明或成最大赢家 山西副书记谈监察体制改革试点:被留置者不上戒具 LG杯第三日赛果:唐韦星胜李东勋 刘星胜党毅飞 马布里:目标不仅是打球 要推动中国篮球发展 谷歌与美国防部合作AI无人机项目 大量职工选择离职 中核旗下企业天津摘地 核工业大学将落地滨海新区
谷歌母公司Q2财报即将公布 分析师预计营收增幅超20% 马克龙将在总统府参演童话音乐剧 亲自负责旁白 欧股:市场试图摆脱关税担忧 欧股上涨 回应中美经贸争议 商务部长连说几个“不” 河北书记王东峰:坚决彻底整改扶贫领域突出问题 投票反对预装国产操作系统?被补一刀的联想否认 越南一架军用飞机坠毁爆炸 两名飞行员遇难(图) 邦达亚洲:鲍威尔首秀前市场屏息 美元指数承压收跌 世界首列加长版中国复兴号动车组试验 时速350公里 辽宁体育局:夺冠不是终点 辽宁振兴体育同行 中国首枚民营火箭升空 他成了中国版埃隆-马斯克 前高管:不想看皇马三连冠 欧足联想让利物浦夺冠
王炜已升任安徽省委组织部正厅级副部长(图/简历) 云南昭通市巧家县发生2.9级地震 震源深度6千米 俄媒称中国共享经济领跑全球 将保持年均40%增长 日新主帅:工作重点重建信赖 征召本田香川看状态 机构报告:08年金融危机让80后成“最惨”一代 夏威夷火山再现300米新裂缝 附近民众再撤离(图) 因达农谈逆转关键:一度很迷惘 在中国比赛不孤独 2018沈阳马拉松9月8日开赛 继续跑浑河两岸 记者请别用错了两会报道用语 开什么店比较有市场 利润最高的不起眼行业 小投资暴利 利润最高的不起眼行业 AG亚游集团