【发布时间】:2014-02-23 03:16:27
【问题描述】:
我以前从未真正使用过 PHP 命名空间,我正在阅读如何在 PHP 网站上使用它,包括如何在一个文件中包含命名空间代码和非非空间(全局代码)。
来源:http://www.php.net/manual/en/language.namespaces.definitionmultiple.php
然后我尝试了以下测试:
namespace {
$bar = 123;
}
namespace moo {
$bar = 400;
}
namespace {
echo $bar . "<br>\n";
//echo moo\$bar . "<br>\n";
}
然而我得到的却出乎意料..
上面的输出是:
400
不应该是123,因为我没有引用moo 命名空间吗?此外,如果我取消注释下一行,我会收到 PHP 语法错误。
我做错了什么?
【问题讨论】:
-
{}在命名空间之后的那种形式对我来说是新的,我认为它只是 PHP 文件开头的一个命令,我认为文档中有一些东西说变量总是全局的:php.net/manual/en/language.namespaces.definition.php -
@JasonSperske 好吧,如果你想在同一个文件中使用全局和命名空间代码,你必须使用括号。不过,我对变量不好,这很痛苦。 :(
-
“强烈建议不要将多个命名空间组合到同一个文件中作为编码实践。” - 从您引用的 php.net 页面。你想在这里完成什么?这不是使用传统命名空间的方式。
-
@mitch 我正在尝试使用 Invision Power Board 构建实现 SSO(单点登录),但我需要在他们的一个文件中包含一堆我自己的代码和文件,但我的数据库 $object 似乎正在被擦除之类的。
标签: php namespaces