我正在使用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的错误。有谁知道吗?
答案 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框架中的全局变量都是个坏主意。