2014-03-13 77 views
-2

所以我有一個PHP類,我有一個小的咆哮起來。想象一類如下圖所示一個PHP:如何從另一個函數訪問類的函數的本地varibale

<?php 
class Foo 
{ 
    public function __construct() 
    { 
    $this->bar1(); 
    } 
    public function bar1() 
    { 
    $myvar = 'Booya!'; 

    return 'Something different'; 
    } 
    public function bar2() 
    { 
    //get value of $myvar from bar1() 
    } 
} 
$new_foo = new Foo(); 
$new_foo->bar2(); 
?> 

問題是, 如何從bar1()保持訪問變量$myvar記住,bar1()返回不同的東西。

+4

保存它作爲一個類屬性,例如'$這個 - > myvar'? – Phil

回答

0

像使用類變量:

$this->myvar = 'Booya!'; 

現在變量MYVAR將在類商店,可以請求或以其他方式改變。

2

你會這樣做......一切都通過代碼旁邊的註釋來解釋。

<?php 
class Foo 
{ 
    private $myvar; //<---- Declare the variable ! 
    public function __construct() 
    { 
     $this->bar1(); 
    } 
    public function bar1() 
    { 
     $this->myvar = 'Booya!'; //<---- Use this $this keyword 

     //return 'Something different';//<--- Comment it.. Its not required ! 
    } 
    public function bar2() 
    { 
     return $this->myvar; //<----- You need to add the return keyword 
    } 
} 
$new_foo = new Foo(); 
echo $new_foo->bar2(); //"prints" Booya! 
2
<?php 
class Foo 
{ 
    var $myvar; 
    public function __construct() 
    { 
    $this->bar1(); 
    } 
    public function bar1() 
    { 
    $this->myvar = 'Booya!'; 

    return 'Something different'; 
    } 
    public function bar2() 
    { 
    //get value of $myvar from bar1() 
    echo $this->myvar; 
    } 
} 
$new_foo = new Foo(); 
$new_foo->bar2(); 
?> 

你應該把它作爲一個類變量,然後再使用$this

2

你不能直接做訪問它,唯一可以做的,而不會改變BAR1()的返回值是創建一個 用於保存該數據的值類變量 在類定義添加

private $saved_data; 

在BAR1():

$myvar = 'Booya!'; 
$this->saved_data = $myvar; 

而且在BAR2()

$myvar_from_bar1 = $this->saved_data 
相關問題