PHP:具有全局命名空间的单个文件中的命名空间
我有一个 require() 命名空间的文件,如下所示:
<?php
require_once('Beer.php'); // This file contains the Beer namespace
$foo = new Beer\Carlsburg();
?>
我想将 Beer 命名空间直接放在同一个文件中,就像这个(不起作用的)示例:
<?php
namespace Beer {
class Carlsburg {}
}
$foo = new Beer\Carlsburg();
?>
但是,PHP 解释器抱怨 No code may exit命名空间之外
。因此,我可以将 $foo
声明包装在命名空间中,但随后我还必须将 Beer 包装在该命名空间中才能访问它!这是我试图避免的一个工作示例:
<?php
namespace Main\Beer {
class Carlsburg {}
}
namespace Main {
$foo = new Beer\Carlsburg();
}
?>
有没有办法在文件中包含 Beer
命名空间的代码,但不包装 $foo
在自己的命名空间中声明(将其保留在全局命名空间中)?
谢谢。
I have a file that require()'s a namespace, as such:
<?php
require_once('Beer.php'); // This file contains the Beer namespace
$foo = new Beer\Carlsburg();
?>
I would like to put the Beer namespace directly in the same file, like this (unworking) example:
<?php
namespace Beer {
class Carlsburg {}
}
$foo = new Beer\Carlsburg();
?>
However, the PHP interpreter complains that No code may exist outside of namespace
. I can therefore wrap $foo
declaration in a namespace, but then I must also wrap Beer in that namespace to access it! Here is a working example of what I am trying to avoid:
<?php
namespace Main\Beer {
class Carlsburg {}
}
namespace Main {
$foo = new Beer\Carlsburg();
}
?>
Is there any way to include the code for the Beer
namespace in the file, yet not wrap the $foo
declaration in its own namespace (leave it in the global namespace)?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您应该使用全局命名空间:
请参阅此处 -> http://php.net/manual/en/language.namespaces.definitionmultiple.php
You should use the global namespace :
See here -> http://php.net/manual/en/language.namespaces.definitionmultiple.php
尝试一下
在同一文件中定义多个命名空间
Try this
As per example #3 in Defining multiple namespaces in the same file
尝试在命名空间名称之前放置一个反斜杠:
初始反斜杠被翻译为“全局命名空间”。如果不放置前导反斜杠,则类名将转换为当前命名空间。
Try placing a backslash before the namespace name:
The initial backslash is translated to "global namespace". If you do not put the leading backslash, the class name is translated to the current namespace.
只需编写它,它没有“名称”:
演示并查看在同一个文件中定义多个命名空间Docs 。
Just write it, it has no "name":
Demo and see Defining multiple namespaces in the same fileDocs.