将全局范围var传递给包含的文件

时间:2014-05-05 15:17:22

标签: php scope

我试图让全局变量显示在包含的文件中。我将在这里复制这条道路:

$var = array();

funcA 
{
    global $var;
    $var = array('some'=>'values');

    funcB
    {
        global $var;

        //$var prints('some'=>'values')
        include_once('myfile.php');
    }
}

OR

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.

我错过了一步吗?

编辑:在未使用全局变量'的upvote列车之前在没有实际答案的情况下离开了我,即使将$var作为参数从funcA传递到funcB,上述内容仍无效。我编辑了代码以进行演示。

该文件是通过文件路径包含的,而不是url,但是它位于另一个目录中 - 是否相关?

编辑:即使在包含文件的之前初始化变量,该值也不会传递给该文件。问题似乎出现在include方法本身。我使用include_once()并提供文件的完整绝对路径。

1 个答案:

答案 0 :(得分:1)

为什么不作为参数传递和/或使用返回值?您的应用程序不需要回复全局变量,通常是设计缺陷的标志。

function getVar() {
    return array('some'=>'values');
}

function printVar($var) {
    include_once('myfile.php');
    // print_r($var);
}

$var = getVar();
printVar($var);

如果您的问题大于示例所示,您应该查看PHP's OOP并开始使用类/对象。查看一些框架,以帮助您直接潜入。