SitePoint: New Articles, Fresh Thinking for Web Developers and Designers

6月30日(米国時間)に公開されたPHP 5.3.0には遅延スタティックバインディング、ラムダ関数、クロージャ、3項演算子、goto演算子などたくさんの新機能が追加されている。なかでも、名前空間がサポートされた点は注目に値する。PHP 5.3で導入された名前空間がどういったもので、実際のプログラミング方法やその効果がどういったものであるかという内容がCraig Buckler氏がSitePointに公開したHow to Use PHP Namespaces, Part 1: The Basicsにまとめられている。

PHPでは関数名やクラス名はグローバルスペースで定義される。このため、PHPライブラリのサイズが増えていくと、こうした名前が衝突して、意図しない場所で再定義されてしまう危険性がある。3rdパーティ製のライブラリを追加する場合にはこの危険性が高くなる。こうした問題を避けるために、PHPのクラス名や関数名には名前規則を適用することが多く、名前が衝突しないように工夫されている。

PHP 5.3で導入された名前空間を使うとこうした問題を回避できる。How to Use PHP Namespaces, Part 1: The Basicsには実際のコーディングサンプルとともに説明がおこなわれている。紹介されている内容を要約すると次のとおり。

  • クラス名、関数名、定数名に名前空間を適用できる
  • 名前空間の定義には「namespace 名前;」を使う
  • php のあとの一番最初のコマンドとしてnamespaceを使う
  • 名前空間はネストできない
  • コードブロックに対して複数の名前空間を定義することはできない
  • 複数の名前空間を書くことはできれば避けた方がいい
  • 1ファイル1名前空間にするべき
  • 名前空間は階層化させることができる
  • 階層化は「\」で区切る
  • 階層化した名前空間の定義はたとえば「namespace 名前\名前\名前;」のようになる
  • アクセスは「名前空間\関数名」や「名前空間\サブ名前空間\サブ名前空間\関数名」のようにおこなう

Craig Buckler氏は引き続きPHP 5.3の名前空間に関する記事を公開するとしており、次の記事では、実際にどのようにして名前空間が処理されているのかを説明するとしている。