【问题标题】:Trying to understand namespace coding试图理解命名空间编码
【发布时间】: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


【解决方案1】:

Can PHP namespaces contain variables? 是您的答案:“变量将始终存在于全局范围内。它们永远不会绑定到命名空间。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2011-04-17
    • 2012-02-25
    • 2021-12-16
    • 2015-01-01
    相关资源
    最近更新 更多