PHP后期静态绑定实例浅析
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-02 11:40:52 浏览: 评论:0
这篇文章主要介绍了PHP后期静态绑定,结合实例形式分析了php后期静态绑定相关概念、原理、使用方法与相关注意事项,需要的朋友可以参考下。
本文实例讲述了PHP后期静态绑定,分享给大家供大家参考,具体如下:
从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();获得类的名称静态方法中调用
Tags: PHP静态绑定
相关文章
- ·PHP面向对象之后期静态绑定功能介绍(2021-05-27)
- ·PHP后期静态绑定之self::限制实例分析(2021-11-02)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)