オブジェクト|php5|名前空間
/*
+---------------------------------------------- -- ----------------------------------+
| この記事は Haohappy<
| = クラスとオブジェクトの章のメモ
| = 不必要なトラブルを避けるため、転載はご遠慮ください
| PHP 愛好家全員で一緒に進歩しましょう
+------------------------------------------ --------- ----------------------------------+
*/
セクション14--名前空間
変数、関数、クラスに名前を付けるのは非常に難しく、変数の名前が理解しやすいものでなければならないことに加えて、その名前が他の場所で使用されていないかどうかも考慮する必要があります。コードの再利用を検討する場合、一般的に、再利用可能なコードは常に関数またはクラスに含まれており、発生する可能性のある多くの名前の競合は避ける必要があります。ただし、関数とクラスの間でも名前の競合が発生する可能性があります。これを回避するには、すべてのクラスの前に接頭辞を追加するか、
Namespace キーワードでコードに名前を付けます。このコード ブロックの外側では、スクリプトは、operator:: の後に名前空間の名前を付けてこのコード ブロックを参照する必要があります。名前空間内のコードは、名前空間自体を宣言する必要はありません。この方法は、プレフィックスを追加するよりも優れています。コードはよりコンパクトになり、読みやすくなります。
階層型 (ネストされた) 名前空間を作成できるかどうか疑問に思うかもしれませんが、答えは「いいえ」です。名前空間名の後ろにコロンを付けると、名前空間内でコロンを使用せずに変数、関数、クラスを呼び出すことができます。ただし、名前空間名の最初の文字と最後の文字、またはコロンの後に続くものは使用できません。 PHP にとっては意味がありませんが、論理ブロックを区別するために使用すると、コード内の親子関係をわかりやすく説明することができます。
/* 注: 次のように使用できます:
namespace Animal:dog {}
namespace Animal:pig {}
親子関係を示すにはコロンを使用します。
*/
名前空間ステートメントに含めることはできません。関数、クラス、または定数定義以外のものが含まれます。これにより、次のことが防止されます。名前空間は、オブジェクト指向に最適です。
例 6.17 は、名前空間の使用方法を示しています。
}
}
//非 OO インターフェースを作成する
function uppercase($text)
{
$e = new textEngine
return($e ->uppercase($text));
}
}
//名前空間のクラスをテストします
$e = new core_php:utility::textEngine;
print($e->uppercase ("from object") . "< br>");
//名前空間の関数をテスト 名前空間の関数をテストします
print(core_php:utility::uppercase("from function") . "
");
//クラスをインポートしますグローバル名前空間 クラスをグローバル名前空間にインポートします
import class textEngine from core_php:utility;
$e2 = new textEngine?>
Import ステートメントは、グローバル名前空間をインポートします。単一の名前空間のメンバーの場合、型を定数、関数、またはクラスとして指定し、メンバーの名前を記述することができます
//たとえば、クラス XXX をインポートします
特定のすべてのメンバーに対して、特定のクラスをインポートする場合。型の場合は、* を使用して名前を置き換えることができます。
//たとえば、import constant * はすべての定数をインポートします。すべての型のすべてのメンバーをインポートする場合は、* を使用します。
//たとえば、import *
Inその後、from キーワードを使用して名前空間の名前を追加します。
//たとえば、 import class textEngine from core_php:utility;
つまり、 import * from myNamespace または import class のようなステートメントを記述する必要がありますcore_php:utility の textEngine (例 6.17 と同様)