我陷入了这种困惑,我不明白为什么我的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 CoreSkeleton;
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或类似的东西。