2013-04-01 44 views
2

我一直在寻找Magic Constants和PHP Reflection,看看以下是可能的:定义局部变量的另一个函数

function one() { 

    setVars(); 

    // $node would be in scope 
    print_r($node); 

} 

function setVars() { 
    return $node = '2'; 
} 

这是一个经典的设计理念?反思似乎是最接近的事情。基本上,我只想在不同的作用域(称为setVars()函数的函数的作用域/上下文)中定义变量。

+0

'$ node'不会在那里。你必须做'$ node = setVars()'...除非我失去了一些东西。 – prodigitalson

+0

也许我应该更清楚。我打算在setVars()中设置MULTIPLE变量。返回不起作用 – mavame

+1

http://php.net/manual/en/functions.returning-values.php#example-158 – Dave

回答

1

对于多个变量,尝试将它们存储在数组中并返回数组。

function one() { 

    $nodeArray = setVars(); 
    print_r($nodeArray); 

} 

function setVars() { 
    $nodeArray[] = 1; 
    $nodeArray[] = 1; 
    $nodeArray[] = 1; 
    return $nodeArray; 
} 
+0

我应该更清楚。我想定义MULTIPLE变量,而不仅仅是一个。 – mavame

+0

这是多重亲爱的。不同之处在于我将这些值存储在一个数组中。 –

+0

除了你的例子只返回一个值。然后我需要对结果运行'extract'以在一个()中定义多个局部变量。感谢您的回答 – mavame

1

看看extract()。

function one() { 

    $vars = setVars(); 
    extract($vars); 

    // $node1 would be in scope 
    print_r($node1); 

} 

function setVars() { 
    $node1 = '1'; 
    $node2 = '2'; 
    return compact('node1','node2'); 
} 

应该说,虽然这是可能的,但它往往会导致糟糕的架构和问题。

+0

我觉得没有必要压缩和提取。 –

+0

不,可能不是,但问题是询问在另一个范围内定义局部变量,我认为这是最接近你的。 – GabeIsman

+0

感谢您的回答 – mavame

相关问题