Несколько пространств имен в одном файле
Primary tabs
У Котерова в разделе "Пространство имен" на стр. 494 читаю следующее:
Оператор namespace должен располагаться в файле первым, до любых объявлений...Иначе скрипт завершится ошибкой
И на следующей странице:
В одном файле допускается использовать несколько пространств имен
И приводится соответствующий пример.
<?php #Объявление пространства имен:
namespace PHP7\functions;
//отладочная функция
function debug($obj)
{
echo "<pre>";
print_r($obj);
echo "</pre>";
}
namespace PHP7\classes;
//класс страницы
class Page
{
//Заголовок
protected $title;
//Содержимое
protected $content;
//Конструктор класса
public function __construct($title = '', content = '')
{
$this->title = $title;
$this->content = $content;
}
}
?>Так разве код, вызванный в предыдущем пространстве имен не является объявлением для следующего? То-есть, второй оператор namespace-же уже не располагается в файле первым. Какая тут логика?
- Log in to post comments
- 7025 reads
vedro-compota
Thu, 02/22/2018 - 14:46
Permalink
по формлению вопроса -- замечания
-- желательно этот пример всё же привести и тексте вопроса (код подсветить)
_____________
матфак вгу и остальная классика =)
Voronve
Thu, 02/22/2018 - 15:10
Permalink
Исправил.
Исправил.
vedro-compota
Thu, 02/22/2018 - 15:16
Permalink
причина
Судя по всему речь идёт о первом объявлении пространства в рамках файла скрипта.
Т.е. вот такое сработает:
#Объявление пространства имен: namespace PHP7\functions; class Second { } namespace PHP7\classes; class Third { }а вот такое уже нет:
class First { } #Объявление пространства имен: namespace PHP7\functions; class Second { } namespace PHP7\classes; class Third { }_____________
матфак вгу и остальная классика =)
Voronve
Thu, 02/22/2018 - 15:19
Permalink
Ага, теперь понял. Значит
Ага, теперь понял. Значит речь шла именно о первом объявлении. Спасибо.