将全局作用域变量传递给包含的文件


Passing global scope var to included file

我试图得到一个全局变量显示在一个包含的文件。我将在这里复制路径:

$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并开始使用类/对象。查看一些框架来帮助你直接进入。