PHPの名前空間と自動的にロード

名前空間

何が名前空間には?

名前空間(英語:名前空間)の可視範囲の識別子(識別子)を表します。識別子は、名前空間を複数定義することができる、異なる名前空間でその意味は無関係です。このように、あなたは他の名前空間での既存の定義ので、新しい名前空間に既存の識別子と競合しない任意の識別子を定義することができます。

簡単に言えば、名前空間は同じ環境を使用する際に別のライブラリの命名の競合が発生し解決することです。たとえば、私はAと呼ばれる機能を持っていますが、システムが機能Aを有し、かつ競合があること。

PHPでの名前空間

多くの既存のPHPライブラリやフレームワークの後に名前空間の導入当初からPHP 5.3のバージョンは、それをサポートするために始めています。それでは、どのようにPHPの名前空間を使用するには?

名前空間の定義

以下は、定義の名前空間の一例です

<?phpの    
//ファイルa.php
名前空間A;

constのテスト= 'ATEST'; 

機能テスト() { 
    リターン__FUNCTION__; 
}

クラステスト{
    パブリック関数__construct(){
        リターン__METHOD__;
    }
}
?>

上記の例でのみ、名前空間定義の典型的な方法でありconst、  function、  class名前空間の制約によって。

名前空間

次のように名前空間を使用します:

<?phpの 
名前空間B;
使う;

constのテスト= 'BTEST';
機能テスト() { 
    リターン__FUNCTION__; 
}

クラステスト{
    パブリック関数__construct(){
        リターン__METHOD__;
    }
}

「a.php」を含む; // Aファイルには、ネームスペースが含まれている必要があります

//完全修飾
// `\ B \グローバル関数is` \ test`場合、絶対位置からの出力を見つけるtest`
エコー\ B \テスト; //出力BTEST

//名前を定義します  
//ここではすでに使用 `によって機能を使用し、` \ A \ ... `A名前空間によって、この文書に記載されているA`
エコーA \テスト; //出力ATEST

//未修飾名
//関数 `test`非修飾名は、そのBを見つけるために、現在のコントロールから名前が付けられます
エコー検査; //出力BTEST

// namespaceキーワードは、現在のネームスペースを表し
エコー名前空間\テスト。
?>

ノートへの最初のものは、唯一まだ時間に来るために使用される名前空間が含まれています。この名前空間のファイルを宣言する必要がされた役割を、果たして宣言された名前空間です。使用時には、することができ__NAMESPACE__、現在のネームスペースを表示するために使用。

あなたはより多く見ることができますPHPの公式マニュアルを参照して

自動的にロード

各ファイル名は、手動制御を肯定し、する必要があるincludeあなたは、自分のシステムやPHPのフレームワークにおけるオートローディング技術を使用できるように、システムが自分を見つけることができ、非常にスマートなものを

最も簡単な方法は、関数を使用することで__autoload機能を、この関数は唯一、世界的な状況である非という名前のコントロールで定義することができます。

関数__autoload($クラス){
  $ DIR = './';
  set_include_path(get_include_path()PATH_SEPARATOR $ ids_dir。。);
  $クラス= str_replace( '\\'、 '/'、$クラス)。'.PHP';
  require_once($クラス)。}

クラスがすでに名前空間の場合、この関数を使用することができるspl_autoload_register方法のクラスを登録代わりにします__autoload

おすすめ

転載: www.cnblogs.com/shareinfo/p/12169712.html
おすすめ