“global”在CakePHP 2.1.1视图中不起作用

时间:2012-03-30 17:32:36

标签: php php-5.3 global

我正在使用PHP 5.3.8和CakePHP 2.1.1。

这是我的观点(布局是空的,实际上它只输出视图本身)

<?php   
// $present is not a view variable
$present = 'Hello World!';

class ApplicationsPDF
{   
    public function CreateApplicationTable()
    {
        global $present;
        exit(var_dump($present));
    }
}


$pdf = new ApplicationsPDF();
$pdf->CreateApplicationTable();
?>

输出为null,而不是“Hello World!”。

如果我将此代码复制并粘贴到一个文件中(我直接从浏览器运行),它就完美无缺了!

所以它一定是CakePHP的错误。有谁知道吗?

2 个答案:

答案 0 :(得分:0)

尝试在类定义之前声明global关键字:

global $present;

class ApplicationsPDF
{   
    public function CreateApplicationTable()
    {
        exit(var_dump($present));
    }
}

答案 1 :(得分:0)

这不是PHP也不是CakePHP错误!

这是因为CakePHP在其视图类中包含视图,因此声明的变量实际上不在全局范围内,global无效。

来自ADmad(source):

  

当您自己运行文件时,您的作业$ testVar ='Hello   世界!'在全球范围内,因此事情就像你期望的那样   至。但是当它用作视图文件时,该文件包含在a中   查看类函数因此它不再在全局上下文和$ testVar中   不再是全局变量,因此您的期望是不正确的。运用   无论如何,OOP框架中的全局变量都是个坏主意。