Область множественных файлов и пространств имен

Я довольно новичок в пространствах имен (и да, я прочитал раздел пространств имен документации 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? ... в 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? в 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();