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

陈耀烨:AI让棋手实力更接近 武宫:不接受点三三 IW赛哈勒普连丢9局吞蛋告负 两新星会师决赛争冠 人民日报:建设职责明确 依法行政的政府治理体系 嘉楠耘智招股书“揭秘”:2万元矿机成本仅2千 Opera登陆纳斯达克 三六零、昆仑万维参股 蔡英文自诩打破台湾底薪 被大陆街边一张广告牌打脸 外媒曝国安回应巴坎布解约:不知情 应是个人行为 广东省委书记李希:实现两个一百年征程上走在前列 美军鱼鹰或在日本首都圈常规飞行 该机型事故频发 路透社:丰田计划通过广汽进入中国电动汽车市场 上港角球开出武磊甩头球进 轰进赛季中超第13球 网红刑侦推理题作者:出题花15分钟 静下心就不难
博努奇:我曾后悔加盟AC米兰 加图索让我想起孔蒂 国务院机构改革方案:撤销农业部 组建农业农村部 韩美今日启动关键决心军演 朝鲜未现强烈抵触 伊拉克议会选举开始投票:摆脱“伊斯兰国”后首次 中国气象局释疑 13年后北京再迎“台风雨” 任正非:基础领域突破非一日之功 是数十年耕耘 自如A轮融资40亿元 华平投资、红杉资本、腾讯领投 美民众在国会山前摆放7000双鞋 纪念死于枪案儿童 金球之争新格局!C罗真要全面逆袭梅西了? 第二个跟风美国国家 巴拉圭驻以使馆迁至耶路撒冷 男子轻信网恋被骗入传销团伙 纸币上写血书求救 美参院通过“台旅法” 台当局心慌怕“大陆武统”
夏普撤销针对中国海信在北美销售电视机的诉讼 对华政策转向?印媒最近突然爆出三个“猛料” 台湾前“立委”揭民进党愚人谎言 这下真相大白了 女子悬赏2万寻被盗摩托 窃贼同伙想领赏金打电话 波音预计未来20年全球对飞行员的需求将激增 圣李帅!高接低挡拼到最后时刻 这一分他当记头功 中超-罗梅罗首秀建功范晓冬救主 申花1-1战平亚泰 前火箭主帅欲重返NBA执教 却遭老东家无情拒绝 道富投资者信心指数上升 股市将大涨? 过年摆地摊赚10万 适合女性开的十五种店 做什么生意本小利大 养牛挣钱为什么没人养 AG亚游集团