ホームページ >バックエンド開発 >PHPチュートリアル >PHPでの名前空間の宣言と使用

PHPでの名前空間の宣言と使用

无忌哥哥
无忌哥哥オリジナル
2018-06-28 15:52:391778ブラウズ

#** 名前空間の宣言と使用

* 1. キーワードを使用します: namespace

* 2.php5.3

* 3. 名前空間以外は何もできませんbefore 宣言とコメント以外のコード、HTML も許可されません

* 4. 名前空間はデフォルトではグローバル位置から始まり、グローバル空間はルート ディレクトリと同様に \ で表されます

* 5. 現在のスクリプトで名前空間が宣言されている場合、システム関数を含むすべてのメンバーへのアクセスは名前空間を使用する必要があります

//1。名前空間を宣言します。

#//同じ名前のクラスを宣言したい場合、定数と関数は別の名前空間を宣言できます


//2 スクリプト内では複数の名前空間が許可されます

//名前空間の宣言 :two、参照には \tow\ を使用します

namespace one;
class Demo{public $name='Peter Zhu';}
const SITE='PHP中文网';
function add($a,$b){return $a+$b;}

//次に、クラス Demo、定数 SITE、および関数 add を宣言します。競合はありません

namespace two;

/ /これはわかると思いますが、これは非常に重要です。たとえば、同じ名前のファイルを異なるディレクトリに作成することは許可されています。//現在の名前空間が何であるかを確認してください。システムのプリセット定数を使用します: __NAMESPACE__

class Demo{public $name='朱老师';}
const  SITE = 'www.php.cn';
function add($a,$b){return $a+$b;}

/ /現在の名前空間を使用して現在のスペースのメンバーにアクセスすることもできます

//現在の名前空間を使用してクラス名を生成します

echo (new Demo)->name, &#39;<br>&#39;; //默认输出的是当前空间的内容

//グローバル スペースから開始する完全な名前空間名を使用できます\。これはルート ディレクトリから開始するのと同じです

//専門用語: 完全修飾名

echo &#39;当前命名空间是: &#39;,__NAMESPACE__,&#39;<br>&#39;;

//3. クロススペース アクセスを実現するにはどうすればよいですか?

//スペース 1 の Demo クラスの属性にアクセスしたい場合、どうすればよいでしょうか? -スペース アクセスは、ファイルへのクロスディレクトリ アクセスと同様に、完全なスペース パスを指定する必要があります

//たとえば、1 つのスペースでクラス Demo のメンバーにアクセスしたいとします

$className = __NAMESPACE__.&#39;\Demo&#39;;
echo (new $className)->name,&#39;<br>&#39;;

//4名前空間を宣言するスクリプトで、システムの事前定義メソッドにアクセスするにはどうすればよいですか?

//たとえば、単一文字の配列が宣言されます

echo (new \two\Demo)->name, &#39;<hr>&#39;;

//グローバルにアクセスするためにこれを述べました。スペース内のメンバーには \ を追加する必要があります。なぜここに追加しなくても大丈夫ですか?

// ユーザーが追加しない場合、最初にこの中で var_dump() 関数が検索されるためです。 space.

//見つからない場合は、グローバル空間で検索するため、エラーは報告されません。ただし、var_dump() 関数も作成します。現在の 2 つのスペースでは、現在のスペース内のユーザー定義の var_dump() のみが実行されます。同じ名前のシステム関数は呼び出されません。

echo &#39;one空间的类成员:&#39;,(new \one\Demo)->name,&#39;<br>&#39;;

//同等の呼び出し構文:

$welcome = &#39;php中文网欢迎您&#39;;
\print_r($welcome); echo &#39;<br>&#39;;
print($welcome); echo &#39;<hr>&#39;;

//注: この print_r() は、システムの組み込み print_r() とは何の関係もありません。名前が同じであるだけです。

// ちょうど、長江道路が上海、合肥にも長江道路がありますが、名前が同じであることを除けば、これら 2 つの道路には何の関係もありません

//長江道路、上海市宝山区

// Changjiang Road, Luyang District, Hefei City

//これが同じ道だと思う人はいないでしょう?

//実際、これら 2 つの関数の完全な呼び出しステートメントは次のようになります。

//1. システムを呼び出します:

function print_r($arg)
{
    echo &#39;我是当前空间声明的函数调用:&#39;.$arg;
}
print_r($welcome); echo &#39;<br>&#39;;

//2. 現在のスペースを呼び出します:

\two\print_r($welcome);

//以降の名前は同じですが、所有権が異なります

以上がPHPでの名前空間の宣言と使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。