Quizás no entendí bien su pregunta; en ese caso, ¿podría darnos un ejemplo de lo que obtienes y de lo que esperarías?
¿Estás seguro de que intentará cargar las funciones de myfile.php
en el espacio de nombres foo
?
Teniendo en cuenta que tengo un archivo (temp-2.PHP) que tiene este aspecto:
<?php
namespace foo;
function my_function_this_file() {
var_dump(__FUNCTION__);
}
my_function_this_file();
include 'my_other_file.php';
my_function_the_other_file();
Y otro (my_other_file.php) que tiene este aspecto:
<?php
function my_function_the_other_file() {
var_dump(__FUNCTION__);
}
Cuando llamo al primero desde mi navegador, obtengo esta salida:
string 'foo\my_function_this_file' (length=25)
string 'my_function_the_other_file' (length=26)
Esto parece indicar que la segunda función no está dentro de ningún espacio de nombres, excepto el global, que corresponde al hecho de que no está declarado en ningún espacio de nombres.
Si no recuerdo mal, la instrucción "espacio de nombres" solo es válida para el archivo en el que se usa, y no para los archivos incluidos.
La página Import names cannot conflict with classes defined in the same file del namespaces FAQ parece indicar que también.
Espero que esto ayude, y entendí bien la pregunta ...
EDIT: por cierto, cambiando el orden de las líneas que, como este:
<?php
include 'my_other_file.php';
namespace foo;
Wouldn' t trabajo: la instrucción "espacio de nombres" debe ser la primera del archivo: obtendrá un error fatal, si lo hace:
Fatal error: Namespace declaration statement has to be the very first statement in the script
http://us2.php.net/manual/en/language.namespaces.basics.php Ejemplos en la página para ejemplos de esto. – koen