`
ythzjk
  • 浏览: 75457 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

PHP延迟静态捆绑Late Static Bindings

    博客分类:
  • php
PHP 
阅读更多

发布时间:2008-11-25 10:21   作者: wangpro   信息来源: PHPchina   [我来说两句(849条)] 看了一下PHP5.3的Late Static Bindings,简单了翻译一下 Late Static Bindings是在PHP5.3中加入的新特性,拼音来说,就是把本来在定义阶段固定下来的表达式或变量,改在执行阶段才决定,比如当一个子类继承了父类的静态表达式的时候,它的值并不能被改变,有时不希望看到这种情况

<!---->

但是现在我想让其输出B,那么使用Late Static Bindings可实现这一特性了

<?php
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
?>
但是现在我想让其输出B,那么使用Late Static Bindings可实现这一特性了
<?php
class A {
    public static function who() {
        echo __CLASS__;
    }
    public static function test() {
        static::who(); // Late Static Bindings     
    }
}
class B extends A {      
    public static function who() {
         echo __CLASS__;
    }
}  
B::test();//输出B
?>

<!---->
分享到:
评论

相关推荐

    PHP Static延迟静态绑定用法分析

    这篇文章将深入探讨PHP5.3引入的延迟静态绑定(Late Static Bindings, LSB),它旨在解决PHP继承模型中一个长期存在的问题。 传统的静态方法调用,如使用`self`关键字,会在方法定义时绑定到类。这意味着在继承链中...

    PHP延迟静态绑定的深入讲解

    为了解决这个问题,PHP 引入了后期静态绑定(Late Static Bindings,LSB),用 `static` 关键字代替 `self` 来实现动态绑定。`static` 关键字在运行时会根据实际调用静态方法的类来决定引用哪个类的方法,而不是按照...

    [中文版] PHP53-chm参考手册

    2. **Late Static Bindings (LSB)**:这是PHP中的一个关键概念,用于解决静态方法调用时的绑定问题。在继承链上,LSB确保静态方法始终绑定到实际调用它的类,而不是定义它的类。 3. **Traits**:Traits是一种代码...

    php-5.3.5 压缩包

    其次,PHP 5.3.5支持晚期静态绑定(Late Static Bindings)。这个特性解决了静态方法调用时,父类和子类继承关系的问题。在之前的版本中,静态方法总是绑定到定义它的类,而晚期静态绑定使得静态方法能在继承链上...

    php 5.3.6 x64 64位 PHP X64 64位

    其次,PHP 5.3开始支持晚期静态绑定(Late Static Bindings),这解决了静态方法调用时的动态上下文问题。在继承链中,晚期静态绑定使得子类可以正确地调用父类的静态方法,即使该调用是通过父类的静态引用进行的。 ...

    php5.3版本中文全手册及正确的打开方式

    其次,该版本引入了晚期静态绑定(Late Static Bindings)。在继承链中,静态方法调用时,晚期静态绑定允许你引用实际调用的类,而不是定义方法的类。这解决了 PHP 中静态方法调用时绑定到父类的问题。 另外,PHP ...

    PHP5.3.8自动安装包与工具

    首先,PHP5.3.8引入了重要的错误处理机制,如晚期静态绑定(Late Static Bindings),这允许开发者在静态上下文中调用父类方法时保持类型安全。此外,它还加强了命名空间(Namespaces)的支持,这是面向对象编程中的...

    PHP 5.3.28

    2. **晚期静态绑定(Late Static Bindings)**:这个特性解决了静态方法调用时的绑定问题,使得子类可以正确地调用父类的静态方法,增强了多态性。在PHP 5.3之前,静态方法总是绑定到定义它们的类,而晚期静态绑定则...

    php-5.3.2软件

    PHP 5.3.2是PHP发展史上的一个重要里程碑,它在5.3系列中引入了许多新的功能和改进,包括命名空间(Namespaces)、晚期静态绑定(Late Static Bindings)、闭包(Closures)等,极大地提升了代码的组织性和可维护性...

    PHP5.3.2011中文帮助文档手册

    3. **晚期静态绑定(Late Static Bindings)**:在继承链中调用静态方法时,PHP5.3引入了晚期静态绑定,允许调用子类中的静态方法,即使在父类中进行调用。 4. **类常量(Class Constants)**:开发者可以在类定义...

    php-5.3.29.zip

    此外,它还包含了晚期静态绑定(Late Static Bindings),这是一种面向对象编程中的重要特性,允许静态方法调用在其被定义的类上下文中执行,而不是调用时的类上下文。 在函数方面,PHP 5.3.29引入了闭包(Closures...

    php5.2.11+5.3.1+5.3.2

    其中最引人注目的可能是晚期静态绑定(Late Static Bindings),这是一个允许静态方法调用在运行时解析其实际调用的对象或类的功能。此外,还增加了命名空间(Namespaces)支持,使得代码组织更加有序,降低了命名...

    PHP中static关键字以及与self关键字的区别

    主要介绍了PHP中static关键字以及与self关键字的区别,本文讲解了static关键字的定义、迟绑定(Late Static Bindings)、以及与self关键字的区别等内容,需要的朋友可以参考下

    支持php5.3.3的php-js-ext 0.1.2扩展

    - 添加了晚期静态绑定(Late Static Bindings),用于解决静态方法调用时的动态上下文问题。 - 引入了闭包(Closures),提供了内联函数和匿名函数的功能,增强了函数式编程能力。 - 错误报告提升,增加了错误处理的...

    php-5.3.1.tar.gz

    2. **晚期静态绑定(Late Static Bindings)**:此功能允许在继承链中静态调用方法时,保持对实际调用类的引用,解决了之前静态方法绑定的一些局限性。 3. **闭包(Closures)**:也称为匿名函数,PHP 5.3引入了...

    php5.3.10包

    此外,该版本还添加了晚期静态绑定(Late Static Bindings)。这个特性解决了静态方法调用时,绑定到父类而非实际调用类的问题。通过使用`static`关键字,静态方法可以在继承链中正确地指向子类实例。 PHP 5.3.10 ...

    php-5.2.17.tar开发学习使用

    此版本的PHP引入了对象模型的增强,包括晚期静态绑定(Late Static Bindings),使得类和对象的静态调用更加灵活。此外,该版本还增强了错误处理机制,提供了更好的错误报告,帮助开发者更快地定位和解决问题。 在...

    PHP 5.3入门经典(所有的源码)

    2. **晚期静态绑定(Late Static Bindings)**:在继承链中调用静态方法时,早期版本的PHP会绑定到定义该方法的类,而PHP 5.3引入的晚期静态绑定允许在运行时绑定到实际调用静态方法的类,这对于多层继承的静态方法...

    php5.3版本开发环境源代码

    3. ** late static bindings(静态绑定)** 在继承链中,PHP5.3引入了晚期静态绑定,允许子类调用父类的静态方法时,使用子类的类型来解析静态属性。这是对早期静态绑定的一种改进,提高了代码的灵活性和可扩展性。...

    PHP5.2、5.3、5.4、5.5、5.6的php memcache.dll扩展

    - PHP5.3:添加了lambda函数(匿名函数)和后期静态绑定(Late Static Bindings),进一步完善了OOP功能,延长了生命周期至2014年。 - PHP5.4:引入了 Traits,提高了类的复用性,并默认开启了Suhosin-Patch,提升了...

Global site tag (gtag.js) - Google Analytics