我是一个新手,对命名空间并不熟悉(我已经阅读了 PHP 文档中的命名空间部分)。我想知道在多个文件中使用命名空间的范围是否有效。当我在一个有全局代码的文件中包含或需要那个文件时,命名空间是否跨越一个文件仍然有效?此外,这对全局代码有何影响?我是否需要针对全局代码进行语法方面的任何更改。
例如,假设我有文件 A.php。我想要能够做到这一点:
namespace A;
class Abc { ... }
假设我有一个全局代码文件,叫做main.php:
include("A.php");
class Abc { ... }
$abc = new Abc(); // Should be global Abc, right?
$abcFromNameSpace = new A\Abc(); // Should be namespace Abc, right?
...
作为一个后续问题,我也想知道如果我在另一个有命名空间的文件中包含一个带有命名空间的文件,会发生什么情况,而不是上面的例子,其中main.php仅具有全局代码。那样会像这样工作:
namespace A;
class Abc { ... }
假设我有一个包含全局代码的文件,叫做B.php:
namespace B;
include("A.php");
class Abc { ... }
$abc = new B\Abc(); // Should be namepsace B Abc, right?
$abcFromNameSpace = new A\Abc(); // Should be namespace A Abc, right?
Abc()
只会在文件的命名空间中查找(除非你在前面加上反斜杠来表明全局命名空间)。 - Emery King