PHP命名空间和类中的全局变量问题


PHP Namespace and global variable issue within classes

我陷入了这种困惑,我不明白为什么我的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
}

如果您使用的是自动加载器或将您的类包含在另一个辅助函数中,则$error变量从未在"global"范围中声明。它最终在一些地方被处理掉了。

在为其赋值之前,请先声明其共享权限。

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

此外,共享变量本身并没有什么问题。$error这个名称似乎有点过于通用。也许你可以想出一个不那么令人震惊或更结构化的交换变量。CCD_ 3或类似的东西。