在提取它们的函数之外的变量用法

时间:2012-06-11 06:58:14

标签: php function variables global

我有一个数组,其中包含指向实例化对象的关联键。例如:

$MyArray = array();
$MyArray['Object_A'] = new Object_A();
$MyArray['Object_B'] = new Object_B();
$MyArray['Object_C'] = new Object_C();

我想对这个数组做的是将它作为对这些对象的引用提取到变量。

extract($MyArray, EXTR_REFS);

该语句有效,我可以像在$Var = new Object();那样使用该数组中的那些对象。

$Object_A->SomeMethod();

然而,当我在我定义的函数中提取它们时,它们不能再在该函数之外使用。它们可以在函数内部使用,如下例所示,但不能在外部使用。

function ExtractObj(&$Array)
{
    extract($Array, EXTR_REFS);

    $Object_A->SomeMethod(); // This works.
}

所以我需要一种方法来使该函数中提取的变量可以从函数外部使用。

function ExtractObj(&$Array)
{
    extract($Array, EXTR_REFS);
}

$Object_A->SomeMethod(); // Not working (Yet).

注意:我尝试使用globalstatic变量修饰符或方法等,但所有内容都给我一个错误。

1 个答案:

答案 0 :(得分:1)

是的,你是对的。变量具有功能范围,因此它们在函数外部不可用。学习将变量作为参数传递给函数,return需要函数中的值并与函数作用域一起使用,它将使您的程序比一个大的凌乱的全局范围更好,更易于维护。