【问题标题】:Do namespace declarations within included files automatically include the parent file's namespace (PHP)?包含文件中的命名空间声明是否自动包含父文件的命名空间 (PHP)?
【发布时间】:2011-04-15 02:49:59
【问题描述】:

应该是一个简单的问题。我还没有安装 5.3,所以我不能自己试验。

在包含的文件中声明命名空间时,是否必须声明命名空间的完整路径,或者是否已经假定包含父命名空间?

例如,如果我有一个文件:

// file1.php
<?php
    namespace parent_space;
    include 'file2.php';
?>

还有第二个文件:

// file2.php
<?php
    namespace child_space;
    // some code
?>

由于file2.php 包含在file1.phpparent_space 命名空间中,因此是“某些代码”的命名空间\parent_space\child_space\,还是只是\child_space\

【问题讨论】:

标签: php namespaces


【解决方案1】:

没有。 PHP 在包含时对文件的 位置 没有任何意义,但在解析代码时,就命名空间而言,它确实将每个文件视为一个完全独立的实体。

所以这段代码不起作用:

<?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

【讨论】:

    【解决方案2】:

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

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

    简短的回答是:不。

    【讨论】:

    • 我假设不,你的意思是我提出的第二种命名空间可能性被使用了?
    • 是的。否是您标题中问题的答案。
    猜你喜欢
    • 2014-07-20
    • 2011-05-29
    • 2018-06-02
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    相关资源
    最近更新 更多