Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

PHPマニュアルに名前空間の記述が追加された

高木さんキター!ホントにありがたいことです。最近全然お手伝いできなくてすみません。。。


PHP 5.3.0以降で導入予定の名前空間についての解説が、公式マニュアルに追加されました。

名前空間の他、遅延静的束縛 (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」が表示されるのか?ということですが、

  • PHP5.3以前:A
  • PHP5.3以降:B

となります。※追記2を参照してください

ついでに、DoYouPHP?に上げているPHPマニュアルも更新しておきました。namazuのindexは現在更新していますので、20日の朝には使えるようになると思います。

追記(2007/11/20 00:13)

意外と早くindex作成が終わりました。http://www.doyouphp.jp/cgi-bin/namazu.cgiからどうぞ。

追記2(2007/12/03 00:15)

PHP5.3からは「self」の代わりに「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();

ことで

  • PHP5.3以降:B

とすることができます。

というのが正解です。TKさん、指摘ありがとうございました。