PHP では、use キーワードを使用して名前空間をインポートできます (構文「use namespace;」)。また、 use キーワードを使用して関数と定数をインポートし、それらのエイリアスを設定することもできます (構文「use namespace)」エイリアスとして;" .
このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター
とは名前空間?
広い意味では、名前空間は物事をカプセル化する方法であり、この抽象的な概念は多くの場所で見られます。たとえば、ディレクトリはオペレーティング システムで関連ファイルをグループ化するために使用され、ディレクトリ内のファイルの名前空間として機能します。
名前空間の定義
PHP の名前空間は PHP5.3 で追加されました。C の知識がある場合、名前空間は新しいものではありません。ただし、PHP では名前空間は依然として非常に重要です。
PHP 名前空間は、次の 2 種類の問題を解決できます。
ユーザー作成コードと PHP 内部クラス/関数/定数またはサードパーティ クラスとの違い/関数/定数間の名前付けの競合;
非常に長い識別子名の別名 (または短い) を作成し (通常、最初の種類の問題を軽減するために定義されます)、ソース コードの可読性を向上させます。 。
名前空間を定義する (キーワード名前空間を使用)
法的な PHP コードはすべて名前空間に含めることができますが、クラス コード型のみを含めることができます。 (抽象クラスや特性を含む)、インターフェイス、関数、定数などは、名前空間の影響を受けます。
名前空間の定義は、キーワード namespace で宣言する必要があります。構文形式は次のとおりです:
namespace 命名空间名;
[例] 名前空間を定義する方法を示します:
<?php namespace MyProject; // 定义名为 MyProject 的命名空间。 const CONNECT_OK = 1; class Myclass { /* ... */ } function Myfunc() { /* ... */ } ?>
名前空間を宣言する前にソース ファイルのエンコーディングを定義するために使用される宣言ステートメントを除き、すべての非 PHP コード (空白文字を含む) を名前空間宣言の前に置くことはできません。
Use namespace: alias/import
PHP では、エイリアス参照またはインポートを通じて外部名前空間を使用できます。これは、の重要な機能に名前を付けることです。空間。これは、Unix のようなファイル システムで他のファイルまたはディレクトリへのシンボリック リンクを作成する方法に似ています。
use キーワードを使用して名前空間インポートを実装します。PHP5.6 以降、関数と定数のインポートが許可され、それらにエイリアスが設定されます。構文形式は次のとおりです:
use namespace;
PHP では、エイリアスは演算子 use および as によって実装されます。構文形式は次のとおりです:
use 命名空间 as 别名;
[例] use 演算子を使用してインポートしますそしてエイリアスを使用します。
<?php namespace foo; use My\Full\Classname as Another; // 下面的例子与 use My\Full\NSname as NSname 相同 use My\Full\NSname; // 导入一个全局类 use ArrayObject; // 导入一个函数 use function My\Full\functionName; // 导入一个函数并定义别名 use function My\Full\functionName as func; // 导入一个常量 use const My\Full\CONSTANT; $obj = new namespace\Another; // 实例化 foo\Another 对象 $obj = new Another; // 实例化 My\Full\Classname 对象 NSname\subns\func(); // 调用 My\Full\NSname\subns\func 函数 $a = new ArrayObject(array(1)); // 实例化 ArrayObject 对象 // 如果不使用 "use \ArrayObject" ,则实例化一个 foo\ArrayObject 对象 func(); // 调用 My\Full\functionName 函数 echo CONSTANT; // 打印 My\Full\CONSTANT 常量 ?>
注: 名前空間内の名前 (Foo\Bar などの名前空間区切り文字を含む完全修飾名、および FooBar などの名前空間区切り文字を含まない相対グローバル名) の場合、先頭のバックスラッシュは不要です。インポートされた名前は完全修飾されている必要があり、現在の名前空間に関連して解決されないため、推奨されます。
操作を簡略化するために、PHP では複数の名前空間を 1 行でインポートすることもサポートしています。サンプル コードは次のとおりです。
<?php use My\Full\Classname as Another, My\Full\NSname; $obj = new Another; // 实例化 My\Full\Classname 对象 NSname\subns\func(); // 调用 My\Full\NSname\subns\func 函数 ?>
インポート操作はコンパイルされて実行されます。ただし、動的クラス名、関数名、または定数名はそうではありません。
<?php use My\Full\Classname as Another, My\Full\NSname; $obj = new Another; // 实例化一个 My\Full\Classname 对象 $a = 'Another'; $obj = new $a; // 实际化一个 Another 对象 ?>
さらに、インポート操作は非修飾名と修飾名にのみ影響します。完全修飾名は決定的であるため、インポートの影響を受けません。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHP名前空間でuseキーワードを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。