jackyrong

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

http://www.ibm.com/developerworks/opensource/library/os-php-5.3new1/index.html
开始有文章阐述

 

其中有一部分如下翻译之
 Late Static Bindings是在PHP5.3中加入的新特性,拼音来说,就是把本来在定义阶段固定下来的表达式
或变量,改在执行阶段才决定,比如当一个子类继承了父类的静态表达式的时候,它的值并不能被改变,有
时不希望看到这种情况
<?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
?>

posted on 2008-11-27 22:59  jackyrong的世界  阅读(375)  评论(0编辑  收藏  举报