包含文件中的命名空间声明是否自动包含父文件的命名空间(PHP)?

时间:2011-04-14 18:25:22

标签: php namespaces

应该是一个简单的问题。我还没有安装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_space\child_space\的名称空间是,或者只是\child_space\

2 个答案:

答案 0 :(得分:4)

没有。在包含时,PHP对文件的 location 没有任何意义,但在解析代码时,它确实将每个文件视为完全独立的实体。

所以这段代码不起作用:

<?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 Food\Tacos;

参考PHP手册以获取有关命名空间的更多信息:http://www.php.net/manual/en/language.namespaces.basics.php

答案 1 :(得分:0)

PHP手册命名空间部分中有一些类似的例子:

http://www.php.net/manual/en/language.namespaces.basics.php

简短的回答是:不。