That's the expected behavior, you have to declare the namespace at the top of the file to "extend" it.
If you include a global namespaced file, it will operate on the global namespace.
Глобално пространство
Ако нямат дефиниция на пространство от имена, дефинициите на всички класове и функции се разполагат в глобалното пространство - както беше в PHP преди да се добави поддръжката на пространства от имена. Използването на представка :: пред името указва, че се използва име от глобалното пространство, дори и в контекста на пространството от имена.
Example #1 Употреба на указването на имена от глобалното пространство
<?php
namespace A::B::C;
/* Това е функция A::B::C::fopen */
function fopen() {
/* ... */
$f = ::fopen(...); // извикване на глобалния fopen
return $f;
}
?>
xmarcos at gmail dot com
21-May-2012 07:08
routinet
28-Aug-2011 11:22
Included files will default to the global namespace.
<?php
//test.php
namespace test {
include 'test1.inc';
echo '-',__NAMESPACE__,'-<br />';
}
?>
<?php
//test1.inc
echo '-',__NAMESPACE__,'-<br />';
?>
Results of test.php:
--
-test-
