2010-03-20 98 views
3

我剛剛開始使用面向對象的PHP,我有以下問題:

我有一個類包含一個包含特定腳本的函數。我需要在同一個類的另一個函數內調用位於該腳本中的變量。

例如:

class helloWorld { 

function sayHello() { 
    echo "Hello"; 
    $var = "World"; 
} 

function sayWorld() { 
    echo $var; 
} 


} 
在上面的例子中,我想打電話給$ var的是,這是一個以前的函數中定義的變量

。這雖然不起作用,那我該怎麼做?

回答

17

你應該在類中創建了var,而不是在功能,因爲當函數結束變量將被取消設置(由於功能結束)...

class helloWorld { 

private $var; 

function sayHello() { 
    echo "Hello"; 
    $this->var = "World"; 
} 

function sayWorld() { 
    echo $this->var; 
} 


} 
?> 

如果變量聲明爲public,它是直接訪問通過所有其他類,而如果變量聲明爲private,它只能在同一個類訪問..

<?php 
Class First { 
    private $a; 
    public $b; 

    public function create(){ 
    $this->a=1; //no problem 
    $thia->b=2; //no problem 
    } 

    public function geta(){ 
    return $this->a; 
    } 
    private function getb(){ 
    return $this->b; 
    } 
} 

Class Second{ 

    function test(){ 
    $a=new First; //create object $a that is a First Class. 
    $a->create(); // call the public function create.. 
    echo $a->b; //ok in the class the var is public and it's accessible by everywhere 
    echo $a->a; //problem in hte class the var is private 
    echo $a->geta(); //ok the A value from class is get through the public function, the value $a in the class is not dicrectly accessible 
    echo $a->getb(); //error the getb function is private and it's accessible only from inside the class 
    } 
} 
?> 
+0

非常感謝您的詳細解釋。 – Sam

0

$var類變量:

class HelloWorld { 

    var $var; 

    function sayHello() { 
     echo "Hello"; 
     $this->var = "World"; 
    } 

    function sayWorld() { 
     echo $this->var; 
    } 

} 

我會避免使它成爲一個全局的,除非有很多其他代碼需要訪問它;如果它只是在同一個班級中使用的東西,那麼這是班級成員的最佳人選。

如果您的sayHello()方法隨後調用sayWorld(),則另一種方法是將該參數傳遞給該方法。

相關問題