php - 多个文件和命名空间范围

标签 php file namespaces scope global

我对命名空间还很陌生(是的,我已经阅读了 PHP 文档的命名空间部分)。我想知道关于多个文件的 namespace 范围是什么。当我在具有全局代码的文件中包含或需要该文件时,命名空间是否在一个文件之外有效?此外,这对全局代码有何影响?我会被迫使用全局代码更改任何语法方面的内容吗?

例如,假设我有文件 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?

最佳答案

任何时候你引用当前文件或类范围之外的类,你都使用它的命名空间:

<?php
namespace B;

$class = new \A\Abc();

但是如果您在脚本中“使用”命名空间,则可以将其省略:'

<?php
namespace B;

use A\Abc;

$class = new Abc();

关于php - 多个文件和命名空间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15239845/

相关文章:

php - 单击复选框后启用文本字段

php - AngularJS | Codeigniter中如何将Json数据发送到数据库

c - 重复文件查找算法的建议(使用 C)

Perl:为变量/函数设置多个包名?

xml - 在 Oracle 9i 中解析 Web 服务响应

c++ - 嵌套在函数中的函数声明的命名空间

php - 替换数组的值 (php)

php - wp 数据库将元数据更改为错误的值

c++ - 将二维数组保存到文件 C++

java - 检查文件夹和所有数据是否已存在