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

贾跃亭公司造车拍地 面对质询乐视回复前后不一 日本官方解释前后矛盾 陆基宙斯盾部署迷失方向 全国两会台湾省代表怎么产生 一直都是13人? 叶露中代表:建议设立大别山绿色发展示范区 乔布斯求职信17.5万美元拍卖 有不少拼写错误 百万富翁葬礼:宾利当灵车 佩戴珠宝价值10万美元 法国警方挫败一起袭击图谋 逮捕两名埃及裔男子 蔡英文劝台湾高中生别上大学先从军 网友猛批:骗人 欧盟连开天价罚单:反垄断还要看绩效 詹姆斯带俩队友就超联盟25队!湖人下季逆天了 后发区域创新产业生态的弯道超车路径 汤森路透发布科技领导企业榜:微软第一 腾讯入围
权健壮行会宋博轩亮相引关注 边路突击手盼返巅峰 外媒:俄向巴国售武接触塔利班 扩南亚“朋友圈” 印最高法裁定被动安乐死合法:病人有权有尊严死亡 美元攀升美股反弹 金价周二收跌0.7% 中国对1030条国内航线实行市场调节价 限幅10% 突破芯片封锁 中国公司“喜提”两台12亿核心机器 Twitter亚太总裁:将强化自身优势 看好中企广告业… 印度女子衣服卡行驶的火车门上 被拖行数米险丧命 亚青赛中国队名单:旅美球员王泉泽 八一队4将 深圳铁路警方破获首例运输新型毒品“奶茶”案 老将排行榜:詹皇仍居榜首 得州俩老炮分列二三 蒂勒森遭解职 分析称“美国优先”将进一步加强
共享自行车国抽结果首次发布 摩拜有产品不合格 马斯克披露Model 3新配置:高端版本超越宝马M3 人类132.8亿光年外发现氧元素 或揭星系诞生之谜 美国日裔上将哈里斯被提名驻韩大使 对中国态度强硬 涨停板早知道:七大利好明日有望发酵 17岁少年被扣车后 多次穿印挑衅交警文字T恤上街 李香凝冬奥首秀略遗憾 与韩国差距大2022压力大 台男子在印尼贩毒还拒捕 被警方击中伤重身亡 美巡中国赛全年可用测距仪 中国选手使用有犹豫 在农村养殖什么赚钱 我出钱谁愿意为我卖命 养20头牛一年赚多少钱 开什么店比较有市场 AG亚游集团