ホームページ > バックエンド開発 > PHPの問題 > エディターはクラス名を引用するようにガイドします (php バージョン)

エディターはクラス名を引用するようにガイドします (php バージョン)

醉折花枝作酒筹
リリース: 2023-03-11 20:52:01
オリジナル
1648 人が閲覧しました

前回の記事では、サブ名前空間とサブ名前空間の定義方法について学びましたので、必要に応じて「php名前空間のサブ名前空間とは何ですか?」もお読みください。 》。今回は参照クラス名の使い方を紹介しますので、必要に応じて参考にしてください。

まず例を見てみましょう。

file1.php ファイル コード

<?php
namespace Foo\Bar\subnamespace; 

const FOO = 1;
function foo() {}
class foo
{
    static function staticmethod() {}
}
?>
ログイン後にコピー

file2.php ファイル コード

<?php
namespace Foo\Bar;
include &#39;file1.php&#39;;

const FOO = 2;
function foo() {}
class foo
{
    static function staticmethod() {}
}

/* 非限定名称 */
foo(); // 解析为函数 Foo\Bar\foo
foo::staticmethod(); // 解析为类 Foo\Bar\foo ,方法为 staticmethod
echo FOO; // 解析为常量 Foo\Bar\FOO

/* 限定名称 */
subnamespace\foo(); // 解析为函数 Foo\Bar\subnamespace\foo
subnamespace\foo::staticmethod(); // 解析为类 Foo\Bar\subnamespace\foo,
                                  // 以及类的方法 staticmethod
echo subnamespace\FOO; // 解析为常量 Foo\Bar\subnamespace\FOO
                                  
/* 完全限定名称 */
\Foo\Bar\foo(); // 解析为函数 Foo\Bar\foo
\Foo\Bar\foo::staticmethod(); // 解析为类 Foo\Bar\foo, 以及类的方法 staticmethod
echo \Foo\Bar\FOO; // 解析为常量 Foo\Bar\FOO
?>
ログイン後にコピー

この例をよく見てみましょう。この例で最も顕著なのは、 foo::staticmethod() です。どのような使用方法を使用する場合でも、「foo::staticmethod()」を使用する必要があることに気づきましたか。これが何を意味するのか?詳しく調べてみましょう。

この例によれば、「staticmethod()」は実際には静的メソッドの名前であり、「foo::」は「」に基づいていることがわかります。 foo()」が解析されます。

PHP 名前空間のクラス名は、次の 3 つの方法で参照できます。

  • 非修飾名、またはプレフィックス を含まないクラス名。たとえば、「$c=new foo();」または「foo::staticmethod();」などです。現在のネームスペースが space の場合、foo は space\foo に解決されます。 foo がグローバル コード、つまりどの名前空間にも含まれていないコードである場合、foo は foo として解析されます。

    • 警告: ネームスペース内の関数または定数が定義されていない場合、修飾されていない関数または定数名はグローバル関数または定数名に解決されます。

  • 修飾名、またはプレフィックス を含む名前 (例: $c = new espace\foo(); または space\foo::staticmethod();。現在のネームスペースが space の場合、foo は space\space\foo に解決されます。 foo を使用するコードがグローバルであり、どの名前空間にも含まれていないコードの場合、foo は space\foo に解決されます。

  • 完全修飾名、またはグローバル接頭辞演算子 を含む名前 (例: $c = new \space\foo();#) # # または \space\foo::staticmethod();。この場合、foo はコード内で常にリテラル名 (リテラル名)space\foo に解決されます。

完全修飾名 を持つ関数は、クラスおよび定数を呼び出すときにコンパイル時に解決されます。

非完全修飾名は、インポート ルールに従ってコンパイル時に変換されます。

ネームスペース内では、インポート ルールに従って変換されないすべての修飾名の前に、現在のネームスペース名が付けられます。

以上です。他に知りたいことがある場合は、ここをクリックしてください。 → →

phpビデオチュートリアル

以上がエディターはクラス名を引用するようにガイドします (php バージョン)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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