我试图得到一个全局变量显示在一个包含的文件。我将在这里复制路径:
$var = array();
funcA
{
global $var;
$var = array('some'=>'values');
funcB
{
global $var;
//$var prints('some'=>'values')
include_once('myfile.php');
}
}
或
funcA
{
$var = array('some'=>'values');
funcB($var)
{
//$var prints('some'=>'values')
include_once('myfile.php');
}
}
myfile.php:
//prints own content (is included)
//$var is empty, whether declared global or not.
我错过了一个步骤吗?
EDIT:在"不使用全局变量"的upvote列车让我没有实际答案之前,即使$var
作为参数从funcA
传递到funcB
,上述仍然不起作用。我已经编辑了代码来演示。
文件通过文件路径包含,而不是url,但确实驻留在另一个目录-这相关吗?
EDIT:即使在包含文件之前初始化变量,该值也不会传递给该文件。问题似乎出在include方法本身。我使用include_once()
并提供文件的完整绝对路径。
为什么不作为参数传递和/或使用返回值?你的应用程序不需要回复全局变量,这通常是设计缺陷的标志。
function getVar() {
return array('some'=>'values');
}
function printVar($var) {
include_once('myfile.php');
// print_r($var);
}
$var = getVar();
printVar($var);
如果您的问题比示例显示的更大,您应该查看PHP的OOP并开始使用类/对象。查看一些框架来帮助你直接进入。