#php #namespaces
#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
, является ли это пространство имен для «некоторого кода» parent_spacechild_space
, или это просто child_space
?
Комментарии:
1. Вот что говорится в документации: php.net/manual/en /…
Ответ №1:
Нет. 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 FoodTacos;
Обратитесь к руководству по PHP для получения дополнительной информации о пространствах имен: http://www.php.net/manual/en/language.namespaces.basics.php
Ответ №2:
В разделе «Пространство имен руководства по PHP» есть несколько похожих примеров:
http://www.php.net/manual/en/language.namespaces.basics.php
Короткий ответ: нет.
Комментарии:
1. Я предполагаю, что под «нет» вы подразумеваете, что используется вторая возможность пространства имен, которую я предложил?
2. ДА. «Нет» — это ответ на вопрос в вашем названии.