PHPネーミングスペースおよび自動ロード

2133 ワード

ネーミングスペース
ネーミングスペースとは何ですか?
ネーミングスペース(英語:Namespace)は、識別子(identifier)の表示範囲を表します.1つの識別子は、異なるネーミング空間における意味が互いに無関係である複数のネーミング空間で定義することができる.これにより、既存の定義が他のネーミングスペースにあるため、新しいネーミングスペースで任意の識別子を定義できます.
簡単に言えば、ネーミングスペースは、異なるライブラリが同じ環境で使用されるときに発生するネーミング競合を解決するためです.例えば、私自身にはAという関数がありますが、システムにはすでにA関数があります.それは衝突します.
PHPのネーミングスペース
PHPはバージョン5.3からネーミングスペースを導入し、その後、多くの既存のPHPクラスライブラリおよびフレームワークがサポートされ始めました.ではPHPのネーミングスペースはどう使いますか?
ネーミングスペースの定義
次に、ネーミングスペースを定義する例を示します.

上の例では、典型的なネーミングスペース定義方法であり、constfunctionclass・ネーミングスペースに拘束されているのみである.
ネームスペースの使用
ネーミングスペースを使用する方法は次のとおりです.

まず注意しなければならないのは、ネーミングスペースが申明の役割しか果たしていないことです.つまり、ネーミングスペースを使用したときも、このネーミングスペースが申明したファイルを含まなければなりません.使用中は__NAMESPACE__で現在のネーミングスペースを表示できます.
詳細はPHP公式ドキュメントをご覧いただけます
自動ロード
ファイルごとにネーミングコントロールを明示して手動でinclude非常にスマートではないので、自分のPHPシステムやフレームワークでオートローディング技術を使って、システムに自分で探してもらうことができます
最も簡単な方法は、関数__autoload関数を利用することですが、この関数は、非命名コントロールでのみ定義できます.つまり、グローバルな場合です.
function __autoload($class) {
  $dir = './';
  set_include_path(get_include_path().PATH_SEPARATOR.$ids_dir);
  $class = str_replace('\\', '/', $class) . '.php'; 
  require_once($class); }

すでにネーミングスペースがあるクラスであれば、関数spl_autoload_registerクラスのメソッドを1つ登録する代わりに、関数__autoload