名前空間に関する議論は5年以上も行われていたのですが、今度こそ結論が出たようです。
何故このようなエントリを書くかというと、Software Design(技術評論社)の11月号にPHPの最新情報としてα版PHP 5.3を紹介しているからです。入稿後に仕様変更があったので最新号の記事ですが既に内容が古くなってしまいました。
# とは言ってもまだ新しい仕様のPHPは無いですが
α版なので仕様や機能が大きく変更される事もありますが大きな変更がありました。見本誌が刷り上がった頃に名前空間の区切り文字が”::”だと静的にメソッドを呼び出す場合やクラス定数を呼び出す場合に困る場合がある、とPHP開発者のMLで議論になり始めました。
ML上、IRC上、オフラインの打ち合わせが行われ、数週間におよぶ議論の結果が昨日MLに投稿されました。名前空間の区切り文字は”::”から”¥”に変更される事になりました。
つまり、
namespace Hoge::Foo::Bar;
は
namespace Hoge¥Foo¥Bar;
とWindowsのパスのように書く事になりました。
“:::”にしてはどうか、という意見もありましたが
namespace Hoge:::Foo:::Bar;
と書くよりは”¥”の方が良いかなと思います。