記事の内容
この記事では、PHPの名前空間について説明します。
PHPのバージョンは、7系です。
名前空間の概要
広義の「名前空間」とは、カプセル化することです。
これはPHPだけではなく、多くの場面で見られる抽象概念です。
たとえば、OSはディレクトリでファイルをグループ化します。
この場合、ディレクトリがその中のファイルの名前空間として機能しています。
PHPの名前空間も、グループ化するために使われます。
グループ化することで、以下の問題を解決します。
- 作成したコードとPHPの組み込みのクラス、関数、定数の名前が衝突する
- その問題を解決するために、Extra_Long_Namesのような長い名前をつける必要がある
PHPの名前空間は、「namespace」というキーワードを使うことで定義できます。
また、参照する時は、「\」というキーワードを使います。
グローバル空間
名前空間の定義がない場合、すべてのクラスや関数の定義はグローバル空間に配置されます。
これは、名前空間に対応する前のPHPがサポートしていた空間です。
namespaceという記述が書かれていな場合は、全てのコードがグローバル空間に所属しています。
グローバル空間にあるクラスや関数を使うためには、「 \」というキーワードを使います。
下記の例では、namespace内で、独自の「var_dump関数」を定義しています。
また、namespace内で、グローバル空間にある「var_dump関数」も呼び出しています。
名前空間の使い方
一つのファイルに複数の名前空間
複数のファイルに、一つの名前空間
複数のファイルをまたいで、一つの名前空間を定義することもできます。
もちろん、同じ名前空間の中では、同一のクラス名や関数名を定義することはできません。
サブ名前空間
名前空間には階層構造を作ることもできます。
階層が異なれば、同じクラス名やメソッド名をつけることができます。
useキーワード
名前空間のクラスやメソッドを使おうとすると、名前が長くなります。
そこで、「use」と「as」というキーワードを使ってエイリアスを作成することもできます。
エイリアスを作成すると、それより上位の名前空間を省略することができます。