【PHP】クラスファイルにおける名前空間の記述ルール

クラスファイルにおける名前空間の記述ルール

PHPでクラスに名前空間を指定した場合のクラスファイル同士の関係や記述ルールをまとめます。

環境: PHP 7.4.4

名前空間とは

それを分けることでクラスファイルや関数に同じ名前を付けて作成出来る仕組みの事。

「名前空間 A」 の Hoge.php
「名前空間 B」 の Hoge.php

上記のように切り分ける事で名前の重複が可能になります。

また、名前空間はクラスにおいてオートロードの仕組みを導入する際に必要となり、威力を発揮します。
(オートロードについては以下の記事で紹介)

【PHP】Composerを使用してクラスのオートロードを行う

同じ名前空間に属するクラスを使用する

クラスから同じ名前空間に属する他のクラスを利用する場合、名前空間の指定なしで利用出来る。

(例)名前空間 app\modelが指定されたDogクラスから同じ名前空間のCatクラスを利用している。

他の名前空間に属するクラスを使用する場合

名前空間が定義されたクラスから他の名前空間に属するクラスを使用する場合、
使用するクラス名を完全修飾名で記述する必要がある。

(例)名前空間 app\model\personが指定されたOwnerクラスから他の名前空間app\model\animalに属するDogクラスを利用する

名前空間の先頭に\(バックスラッシュ)を付けて完全修飾名としている

use文を利用する

利用するクラスの名前空間は以下のようにuse文であらかじめ記述しておくことが出来る。
(先頭の\は合っても無くてもどちらもでもOK)

名前空間に属さないクラスを使用する場合

名前空間が定義されたクラスから
名前空間を指定していない(いずれの名前空間にも属さない)クラスを使用する場合、
使用するクラス名の先頭に\(バックスラッシュ)を記述する。

(例)名前空間app\model\personが指定されたOwnerクラスから、名前空間に属さないDogクラスを利用する。

PHPの標準クラスを利用する

PHPにあらかじめ用意されているクラス、
(例えばデータベースアクセスのPDOクラスなど)はグローバル空間という場所に所属するため
名前空間に属するクラスから使用する場合は、こちらも先頭に\(バックスラッシュ)を記述する必要がある。

名前空間が定義されていないクラスから名前空間に属するクラスを使用する

いずれの名前空間にも属さないクラスから名前空間に属するクラスを使用する場合は
クラスの記述は完全修飾名でなくても良い。

(例)名前空間に属さないOwnerクラスから、名前空間app\model\animalに属するDogクラスを使用する。

\(バックスラッシュ)は不要 (書いても良い)

Follow me!