多个文件和命名空间范围(Multiple Files and Namespaces Scope)

2019-07-21 02:02发布

我很新的命名空间(是的,我读过了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?

Answer 1:

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

<?php
namespace B;

$class = new \A\Abc();

但是,如果你在你的脚本“使用”的命名空间,你可以离开它:”

<?php
namespace B;

use A\Abc;

$class = new Abc();


文章来源: Multiple Files and Namespaces Scope