首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中的嵌套命名空间

PHP中的嵌套命名空间
EN

Stack Overflow用户
提问于 2014-12-21 17:22:58
回答 2查看 1.1K关注 0票数 3

因此,我将我的编译器设置为PHP,但我在名称空间方面遇到了一些问题。

在我的语言中,它们看起来像这样:

代码语言:javascript
复制
package Foo
{
    package Bar
    {
        class X { }
    }

    class Y { }
}

当然,PHP不处理嵌套的名称空间。翻译这段代码的最好方法是什么,让它仍然在PHP中工作?

我需要注意的是,所有的文件最终都被编译成一个PHP文件。需要注意的一点是,在关闭包之后,我必须返回到全局名称空间,而我还没有找到任何关于如何做到这一点的文档。在我看来,在PHP中,一旦声明了名称空间,它就会应用于整个文件。

EN

回答 2

Stack Overflow用户

发布于 2014-12-21 18:18:58

确实,“命名空间声明不能嵌套”.Namespacing被用来避免冲突的定义,并在你的命名空间代码块周围的code.The括号中引入更多的灵活性和组织结构你想要将你的代码翻译成能够在php中运行的完全optional.If。你可以这样写:

代码语言:javascript
复制
namespace Foo\Bar;

class X{
    // Your properties
}
class Y {
// Your properties
}

如果您需要更多信息,可以查看Elias Zerrouq用示例http://code.tutsplus.com/tutorials/namespacing-in-php--net-27203编写的链接

票数 10
EN

Stack Overflow用户

发布于 2014-12-21 19:06:40

Zotoaster很可能做你想做的事情;然而,我的解决方案将依赖于psr-4自动加载解决方案。这样,通过将您的文件放在适当的文件夹中,您将能够在php文件的开头执行以下操作:

代码语言:javascript
复制
use Foo\Bar\X;
use Foo\Y;

然后,您可以相应地实例化这些类:

代码语言:javascript
复制
$x = new X();
$y = new Y();

你可以在这里阅读更多关于如何使用命名空间的内容:https://getcomposer.org/doc/01-basic-usage.md#autoloading此外,你可以使用composer来为你处理“脏活”,即所有的自动加载:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27588127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档