名前空間
名前空間の使用法
名前空間
PHP Manual

## 名前空間の定義

名前空間の宣言は、namespace キーワードを用いて行います。これを、ファイルの先頭に記述しなければなりません。 たとえば次のようになります。

例1 名前空間の定義

`<?php
namespace MyProject::DB;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
?>`
同一の名前空間を、複数のファイルで使用することもできます。

名前空間の中にはクラスや定数、関数定義を含めることができます。 ただしそれら以外のコードを含めることはできません。

名前空間の定義は次のようなものです。

- 名前空間の内部では、すべてのクラスや関数、 定数名には自動的に名前空間名のプレフィックスが付加されます。 クラス名は常にフルネームとなります。つまり、 上の例のクラスをコールする際は MyProject::DB::Connection とします。
- 定数を定義すると、名前空間名と定数名を組み合わせた定数を作成します。 クラス定数と同様、名前空間定数にも静的な値しか保持できません。

- 修飾されていないクラス名 (:: を含まない名前) は、実行時に次の手順で解決されます。

  1. そのクラスを、現在の名前空間から (つまり現在の名前空間名を先頭につけて) 探します。 その際には autoload を試みません。
  2. グローバル名前空間から、autoload を試みずにそのクラスを探します。
  3. 現在の名前空間で autoload を試みます。
  4. 以上がすべて失敗した場合は、クラスの検索が失敗します。

- 修飾されていない関数名 (:: を含まない名前) は、実行時にまず現在の名前空間で探され、 次にグローバル空間で探します。

- 修飾されていない定数名は、 まず現在の名前空間で探され、次にグローバル空間で探します。

完全な 名前解決の規則 も参照ください。

名前空間
名前空間の使用法
名前空間
PHP Manual