ホームページ > バックエンド開発 > PHPの問題 > PHP名前空間でuseキーワードを使用する方法

PHP名前空間でuseキーワードを使用する方法

青灯夜游
リリース: 2023-03-13 07:50:02
オリジナル
3755 人が閲覧しました

PHP では、use キーワードを使用して名前空間をインポートできます (構文「use namespace;」)。また、 use キーワードを使用して関数と定数をインポートし、それらのエイリアスを設定することもできます (構文「use namespace)」エイリアスとして;" .

PHP名前空間でuseキーワードを使用する方法

このチュートリアルの動作環境: 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 = &#39;Another&#39;;
    $obj = new $a;      // 实际化一个 Another 对象
?>
ログイン後にコピー

さらに、インポート操作は非修飾名と修飾名にのみ影響します。完全修飾名は決定的であるため、インポートの影響を受けません。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHP名前空間でuseキーワードを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート