Несколько пространств имен в одном файле

У Котерова в разделе "Пространство имен" на стр. 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-же уже не располагается в файле первым. Какая тут логика?

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

  • Просьба -- оформить цитаты как цитаты. (см. например текст ниже)
  • И приводится соответствующий пример

    -- желательно этот пример всё же привести и тексте вопроса (код подсветить)

_____________
матфак вгу и остальная классика =)

Voronve's picture

Исправил.

vedro-compota's picture

Так разве код, вызванный в предыдущем пространстве имен не является объявлением для следующего?

Судя по всему речь идёт о первом объявлении пространства в рамках файла скрипта.
Т.е. вот такое сработает:

#Объявление пространства имен:
namespace PHP7\functions;
 
class Second
{

}

namespace PHP7\classes;
class Third
{

}

а вот такое уже нет:

class First
{

}
	
#Объявление пространства имен:
namespace PHP7\functions;
 
class Second
{

}


namespace PHP7\classes;
class Third
{

}

_____________
матфак вгу и остальная классика =)

Voronve's picture

Ага, теперь понял. Значит речь шла именно о первом объявлении. Спасибо.