【问题标题】:PHP Namespace and global variable issue within classes类中的 PHP 命名空间和全局变量问题
【发布时间】:2011-12-04 19:34:20
【问题描述】:

我陷入了这种困惑,我不明白为什么我的 HelperClass() 下的全局 $error 返回空,我可以在其中验证 $class->error 确实早先填充了数据。

在这种情况下,命名空间是否存在一些我不知道的问题?请给我一些指点。

以下是一些相关的代码。

在主文件下

namespace Core;
$class = new ControllerClass();
$error = $class->error;
// verified that $error prints correctly here
include ViewFile.php;

在 ViewFile.php 下

$helper = new HelperClass();
// __autoload function took care of the include

在 HelperClass 下:

namespace Core\Skeleton;

class HelperClass {
public function __construct() {
global $error;
// $error != $class->error as defined earlier    
// $error is empty here
}

【问题讨论】:

    标签: php namespaces global-variables


    【解决方案1】:

    如果您正在使用自动加载器或在另一个辅助函数中包含您的类,那么 $error 变量从未在“全局”范围内声明。它最终在某个地方,并被处理掉了。

    在为它赋值之前声明它是共享的。

    namespace Core;
    $class = new ControllerClass();
    global $error;
    $error = $class->error;
    

    虽然共享变量本身并没有错。 $error 这个名字似乎有点太笼统了。也许您可以使用不那么模棱两可或更结构化的交换变量。 $GLOBALS["/var/log"]["controller_error"] 或其他类似的东西。

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 2021-04-19
      • 2017-01-04
      • 1970-01-01
      • 2012-03-13
      • 2011-03-25
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多