data-id="1190000004892254">
名前空間
名前空間の宣言
名前空間は、PHP ファイルの先頭、
メーカーの名前空間、つまり以下で宣言されている "Oreilly" は、最も重要な名前空間です。世界的にユニーク。
<code><?php namespace Oreilly;</code>
サブネームスペース
<code><?php namespace Oreilly\ModernPHP;</code>
PHP に名前空間が導入される前、開発者は名前の競合を解決するために Zend スタイルのクラス名を使用していました
<code># Zend_Cloud_DocumentService_Adapter_WindowsAzure_Query => Zend/Cloud/DocumentService/Adapter/WindowsAzure/Query.php</p> <p> しかし、ご覧のとおり、長すぎて許容できません。 ! ! </p>namespace は、この問題を解決するためにインポートとエイリアスを提供します。 <p>インポート、エイリアスは、バージョン 5.3 でクラス、インターフェイス、および名前空間のインポートをサポートします。 5.6 では関数と定数インポートのサポートを開始します。 </p> <pre class="brush:php;toolbar:false"><code># namespace without alias <?php $response = new \Symfony\Component\HttpFoundation\Response('Oops',400); $response->send(); $response2 = new \Symfony\Component\HttpFoundation\Response('Success',200);</code>
<code># namespace with Default alias use Symfony\Component\HttpFoundation\Response; $response = new Response('Oops',400); $response->send();</code>
<code># namespace with custom alias use Symfony\Component\HttpFoundation\Response as Res; $response = new Res('Oops',400); $response->send();</code>
注:
名前空間宣言と同じように、PHP ファイルの先頭、
シンボルを追加する必要はありません。最初は、PHP インポートが完了しているためです。
use はコンパイル時に使用されるため、グローバル スコープに指定する必要があります。
PHP5.6 以降では関数と定数をインポートできます。
<code><?php use func Namespace\functionName; functionName();</code>
<code><?php use constant Namespace\CONST_NAME; echo CONST_NAME; </code>
実践的なヒント
複数のインポート
PHP ファイルに複数のクラス、インターフェイス、関数、または定数をインポートする場合は、複数の use ステートメントを使用する必要があります。
非推奨:
<code><?php use Symfony\Component\HttpFoundation\Request, Symfony\Component\HttpFoundation\Response, Symfony\Component\HttpFoundation\Cookie;</code>
推奨:
<code><?php use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Cookie;</code>
PHP では 1 つのファイルで複数の名前空間を定義できます [強く推奨されません]
<code><?php namespace Foo { //... } namespace Bar { //... }</code>
グローバル名前空間
<code><?php namespace My\App; class Foo { public function doSomething() { $ex = new \Exception(); } }</code>
注: 現時点では、例外でclass 名前の前に接頭辞を追加すると、PHP は例外をグローバルに検索します。デフォルトでは、現在の名前空間で検索します。
上記では、Modern-php の本の抜粋 (1) 名前空間を、エスケープとモダンな側面を含めて紹介しました。これが、PHP チュートリアルに興味のある友人に役立つことを願っています。