В объявлениях пространства имен внутри включенных файлов автоматически входит пространство имен родительского файла (PHP)?

Должен быть простой вопрос. У меня еще нет 5.3, поэтому я не могу экспериментировать сам.

При объявлении пространства имен во включенном файле, нужно ли объявлять полный путь пространства имен или это родительское пространство имен, которое предположительно предполагается включенным?

Например, если у меня есть файл:

// file1.php <?php namespace parent_space; include 'file2.php'; ?> 

и второй файл:

 // file2.php <?php namespace child_space; // some code ?> 

Поскольку file2.php включен из пространства имен parent_space в file1.php , это пространство имен для «some code» \parent_space\child_space\ , или это просто \child_space\ ?

Нет. PHP не придает никакого значения местоположению вашего файла при включении, но он обрабатывает каждый файл как полностью отдельный объект в отношении пространств имен при разборе кода.

Таким образом, этот код не будет работать:

 <?php namespace Food; //this is a top level namespace include 'file2.php'; //file2.php <?php namespace Tacos; //this is still a top level namespace 

Вам нужно будет определить файл file2.php таким образом:

 <?php namespace Food\Tacos; 

Ссылка на руководство по PHP для получения дополнительной информации об пространствах имен: http://www.php.net/manual/en/language.namespaces.basics.php

В разделе пространств имен PHP указаны некоторые аналогичные примеры:

http://www.php.net/manual/en/language.namespaces.basics.php

Короткий ответ – нет.