(PHP 5 >= 5.3.0, PHP 7, PHP 8)
名前空間とは何でしょう? 広義の「名前空間」とは、項目をカプセル化するもののことです。
これは多くの場面で見られる抽象概念です。
たとえば、たいていの OS はディレクトリでファイルをグループ化します。
この場合、ディレクトリがその中のファイルの名前空間として機能しています。
具体的に言うと、foo.txt
というファイルは
/home/greg
と /home/other
の両方に存在することが可能ですが、それらふたつの
foo.txt
を同じディレクトリに配置することはできません。
さらに、/home/greg
ディレクトリの外から
foo.txt
にアクセスするには、ディレクトリ名をファイル名の前につけて
/home/greg/foo.txt
としなければなりません。
プログラミングの世界における名前空間も、この延長線上にあります。
PHP の世界では、名前空間は次のふたつの問題を解決するための手段として用意されています。 ライブラリやアプリケーションの作者が、 クラスや関数といった再利用可能なコード部品を作ろうとするときにこれらの問題にぶちあたることになります。
PHP の名前空間は、関連するクラスやインターフェイス、関数、そして定数をひとまとめにして扱うものです。 PHP の名前空間構文の例を見てみましょう。
例1 名前空間構文の例
<?php
namespace my\name; // "名前空間の定義" を参照ください
class MyClass {}
function myfunction() {}
const MYCONST = 1;
$a = new MyClass;
$c = new \my\name\MyClass; // "グローバル空間" を参照ください
$a = strlen('hi'); // "名前空間の使用法: グローバル関数/定数への
// 移行" を参照ください
$d = namespace\MYCONST; // "namespace 演算子および __NAMESPACE__ 定数"
// を参照ください
$d = __NAMESPACE__ . '\MYCONST';
echo constant($d); // "名前空間および動的言語機能" を参照ください
?>
注意: 名前空間の名前は、大文字小文字を区別しません。
注意:
名前空間の名前として
PHP
や これらで始まる名前 (PHP\Classes
など) は 言語の内部で使うために予約されており、ユーザーのコードで使うべきではありません。