2012-06-11 18 views
-1

我有一个指向实例化对象的关联关键字的数组。例如:提取函数之外的变量用法

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

+0

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

回答

1

是的,你是对的。变量有函数范围,所以它们在函数外部不可用。学习将变量作为参数传递给函数,return需要来自函数的值,并与函数范围一起使用,它将使您的程序更好,更易于维护,而不仅仅是一个大的混乱的全局范围。