【问题标题】:Variable usage outside the function where they were extracted在提取它们的函数之外使用变量
【发布时间】:2012-06-11 06:58:14
【问题描述】:

我有一个带有指向实例化对象的关联键的数组。例如:

$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 变量修饰符或方法等,但一切都给我一个错误。

【问题讨论】:

  • 简单的答案是:“你不能”。如果您希望提取的值在全局范围内可用,则必须在全局范围内进行,即在任何函数或类之外提取它们。

标签: php function variables global


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多