Должен быть простой вопрос. У меня еще нет 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
Короткий ответ – нет.