2013-04-01 72 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

相關問題