PHPチュートリアル

PHPホーム PHPイントロ PHPインストール PHP構文 PHPコメント PHP変数 PHPエコー/印刷 PHPデータ型 PHP文字列 PHP番号 PHP数学 PHP定数 PHP演算子 PHP If ... Else ... Elseif PHPスイッチ PHPループ PHP関数 PHP配列 PHPスーパーグローバル PHP正規表現

PHPフォーム

PHPフォーム処理 PHPフォームの検証 PHPフォームが必要 PHPフォームのURL / Eメール PHPフォームの完了

PHP Advanced

PHPの日付と時刻 PHPインクルード PHPファイルの処理 PHPファイルのオープン/読み取り PHPファイルの作成/書き込み PHPファイルのアップロード PHPクッキー PHPセッション PHPフィルター PHPフィルターアドバンスト PHPコールバック関数 PHP JSON PHPの例外

PHPOOP _

PHPOOPとは PHPクラス/オブジェクト PHPコンストラクター PHPデストラクタ PHPアクセス修飾子 PHPの継承 PHP定数 PHP抽象クラス PHPインターフェース PHPの特性 PHP静的メソッド PHPの静的プロパティ PHP名前空間 PHPIterables

MySQLデータベース

MySQLデータベース MySQLコネクト MySQL Create DB MySQLテーブルの作成 MySQLの挿入データ MySQLは最後のIDを取得します MySQL Insert Multiple MySQLを準備しました MySQL Select Data MySQL Where MySQL Order By MySQLデータの削除 MySQLアップデートデータ MySQL制限データ

PHP XML

PHPXMLパーサー PHPSimpleXMLパーサー PHPSimpleXML-取得 PHP XMLExpat PHP XML DOM

PHP -AJAX

AJAXイントロ AJAX PHP AJAXデータベース AJAX XML AJAXライブ検索 AJAXポール

PHPの

PHPの例 PHPコンパイラ PHPクイズ PHP演習 PHP証明書

PHPリファレンス

PHPの概要 PHP配列 PHPカレンダー PHPの日付 PHPディレクトリ PHPエラー PHP例外 PHPファイルシステム PHPフィルター PHP FTP PHP JSON PHPキーワード PHP Libxml PHPメール PHP数学 PHPその他 PHP MySQLi PHPネットワーク PHP出力制御 PHP正規表現 PHP SimpleXML PHPストリーム PHP文字列 PHP変数の処理 PHPXMLパーサー PHP Zip PHPタイムゾーン

PHP名前空間


PHP名前空間

名前空間は、2つの異なる問題を解決する修飾子です。

  1. それらは、タスクを実行するために一緒に働くクラスをグループ化することによって、より良い組織化を可能にします
  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();