PHP名前空間
PHP名前空間
名前空間は、2つの異なる問題を解決する修飾子です。
- それらは、タスクを実行するために一緒に働くクラスをグループ化することによって、より良い組織化を可能にします
- 同じ名前を複数のクラスに使用できます
たとえば、Table、Row、CellなどのHTMLテーブルを記述するクラスのセットがあり、Table、Chair、Bedなどの家具を記述する別のクラスのセットがある場合があります。名前空間を使用して、クラスを2つの異なるグループに編成すると同時に、2つのクラスTableとTableが混同されるのを防ぐことができます。
名前空間の宣言
名前空間は、次のnamespace
キーワードを使用してファイルの先頭で宣言されます。
構文
Htmlという名前空間を宣言します。
namespace Html;
注:宣言は、PHPファイルのnamespace
最初のものでなければなりません。次のコードは無効になります。
<?php
echo "Hello World!";
namespace Html;
...
?>
このファイルで宣言されている定数、クラス、および関数は、 Html名前空間に属します。
例
Html名前空間にTableクラスを作成します。
<?php
namespace Html;
class Table {
public $title = "";
public
$numRows = 0;
public function message() {
echo "<p>Table
'{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new
Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
さらに整理するために、ネストされた名前空間を持つことができます。
構文
Codeという名前空間内でHtmlという名前空間を宣言します。
namespace Code\Html;
名前空間の使用
宣言に続くコードはすべてnamespace
名前空間内で動作しているため、名前空間に属するクラスは修飾子なしでインスタンス化できます。名前空間の外部からクラスにアクセスするには、クラスに名前空間をアタッチする必要があります。
例
Html名前空間のクラスを使用します。
$table = new Html\Table()
$row = new Html\Row();
同じ名前空間の多くのクラスが同時に使用されている場合は、次のnamespace
キーワードを使用する方が簡単です。
例
Html \ qualifierを必要とせずに、Html名前空間のクラスを使用します。
namespace Html;
$table = new Table();
$row = new Row();
名前空間エイリアス
記述しやすくするために、名前空間またはクラスにエイリアスを指定すると便利な場合があります。これはuse
キーワードで行われます:
例
名前空間にエイリアスを指定します。
use Html as H;
$table = new H\Table();
例
クラスにエイリアスを指定します。
use Html\Table as
T;
$table = new T();