前回の記事では、サブ名前空間とサブ名前空間の定義方法について学びましたので、必要に応じて「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 'file1.php'; 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 中国語 Web サイトの他の関連記事を参照してください。