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

Должен быть простой вопрос. У меня еще не установлено 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, это пространство имен для "некоторого кода" \parent_space\child_space\ или просто \child_space\?

Ответы [ 2 ]

4 голосов
/ 14 апреля 2011

Нет. 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

0 голосов
/ 14 апреля 2011

В разделе пространства имен руководства по PHP есть несколько похожих примеров:

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

Краткий ответ: нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...