因此,我将我的编译器设置为PHP,但我在名称空间方面遇到了一些问题。
在我的语言中,它们看起来像这样:
package Foo
{
package Bar
{
class X { }
}
class Y { }
}当然,PHP不处理嵌套的名称空间。翻译这段代码的最好方法是什么,让它仍然在PHP中工作?
我需要注意的是,所有的文件最终都被编译成一个PHP文件。需要注意的一点是,在关闭包之后,我必须返回到全局名称空间,而我还没有找到任何关于如何做到这一点的文档。在我看来,在PHP中,一旦声明了名称空间,它就会应用于整个文件。
发布于 2014-12-21 18:18:58
确实,“命名空间声明不能嵌套”.Namespacing被用来避免冲突的定义,并在你的命名空间代码块周围的code.The括号中引入更多的灵活性和组织结构你想要将你的代码翻译成能够在php中运行的完全optional.If。你可以这样写:
namespace Foo\Bar;
class X{
// Your properties
}
class Y {
// Your properties
}如果您需要更多信息,可以查看Elias Zerrouq用示例http://code.tutsplus.com/tutorials/namespacing-in-php--net-27203编写的链接
发布于 2014-12-21 19:06:40
Zotoaster很可能做你想做的事情;然而,我的解决方案将依赖于psr-4自动加载解决方案。这样,通过将您的文件放在适当的文件夹中,您将能够在php文件的开头执行以下操作:
use Foo\Bar\X;
use Foo\Y;然后,您可以相应地实例化这些类:
$x = new X();
$y = new Y();你可以在这里阅读更多关于如何使用命名空间的内容:https://getcomposer.org/doc/01-basic-usage.md#autoloading此外,你可以使用composer来为你处理“脏活”,即所有的自动加载:
https://stackoverflow.com/questions/27588127
复制相似问题