名前空間は主に、コード内のクラスと関数の間で起こり得る競合の問題を解決するために使用されることをご存知ですか?この機能は他の言語では以前からありましたが、PHP の登場が遅く、PSR-4 の登場が PSR-4 の誕生、さらに Composer の台頭のきっかけとなったので、非常に重要な機能です。
たとえば、新しい \A\B\C では、C は A\B 名前空間の C クラスに解決されます。
たとえば、B\C() が名前空間 A で呼び出された場合、最終的に参照される名前空間は A\B\C() になります。
たとえば、C() が名前空間 A\B で呼び出された場合、最終的に参照される名前空間は A\B\C() になります。
namespace \Example; require_once "fnction.php"; class ClassA {} function Function() {} //完全限定名称 \Example\Function(); \Example\B\Function(); //限定名称 B\Function(); //指向 \Example\B\Function(); //非限定名称 $test = new ClassA(); //resolves to \Example\ClassA Function(); //指向 \Example\Function
注:
namespace Foo\Bar\subnamespace; const FOO = 1; function foo() { return "foo\r\n"; } class foo { static function staticmethod() { return __METHOD__ . "\r\n" ; } function foofunction() { return __METHOD__ . "\r\n" ; } }
namespace secondsp; include 'function.php'; class foo { function foofunction() { return __METHOD__ . "\r\n" ; } } function is_file($file) { return true ; } //非限定名称:实例化secondsp\foo类对象 $obj = new foo; echo $obj->foofunction(); //实例化Foo\Bar\subnamespace\foo 类对象 $obj = new Foo\Bar\subnamespace\foo ; echo $obj->foofunction(); //代码会报错,在命名空间内部,假如无法找到当前命名空间下的类,则会报错 //$obj = new ArrayObject(array(1)); $obj = new \ArrayObject(array(1)); //在命名空间内部,假如无法找到当前命名空间下的函数或者常量,则会寻找 native function echo strlen("nihao"); //引用当前命名空间下的函数 var_dump(is_file('nihao')); //True //引用全局函数 var_dump(\is_file('nihao')); //False
include 'function.php'; use Foo\Bar\subnamespace\foo ; $obj = new foo; echo $obj->foofunction(); use Foo\Bar\subnamespace\foo as aliasfunname; $obj = new aliasfunname; echo $obj->foofunction(); use Foo\Bar\subnamespace ; $obj = new subnamespace\foo ; echo $obj->foofunction(); use Foo\Bar\subnamespace as aliasname; $obj = new aliasname\foo ; echo $obj->foofunction(); //由于调用代码并不在命名空间内,所以对于全局的类,无需引入使用 $obj = new ArrayObject(array(1)); //导入一个函数 use function Foo\Bar\subnamespace\foo ; echo foo(); use function Foo\Bar\subnamespace\foo as func; echo func(); use const Foo\Bar\subnamespace\FOO; //echo FOO;
概要:
ファイルがある場合、Python パーサーはパッケージまたはすべてのモジュールのファイルを自動的にインポートします。
PHP ビデオ チュートリアル 」
以上がPHP の重要な機能である名前空間についていくつか考えてみます。 ! !の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。