2009-09-12 51 views
0

昨天我有幾個關於OO和PHP here中的類的問題,但我有幾個新問題。關於PHP中OO的問題繼續

1a)
在下面的示例代碼片段中,您將看到3個變量設置在類的頂部,然後用於類中的方法。請注意,在開始聲明的3變量沒有被設置爲任何東西,那麼是否需要設置/列出類將在頂部使用的所有變量?

1b)或者他們只是在頂部調用,以設置它們被保護/私人/公共?

1c)是否總是需要設置一個這樣的變量,假設所有的變量都是公開的,您是否還需要在開始時設置它們?

<?PHP 
class widget{ 
    private $name; 
    public $price; 
    private $id; 

    public function __construct($name, $price){ 
     $this->name = $name; 
     $this->price = floatval($price); 
     $this->id = uniqid(); 
    } 
} 
?> 

回答

2

類聲明中而不是在方法中聲明的變量是「成員變量」這個類的 - 他們將範圍限定在只類,但可用於該對象的所有方法,以及一套新的每個將爲每個對象實例創建。

$a = new widget("first", 0.1); 
$b = new widget("second", 0.2); 

echo $a->price; // will echo 0.1 
echo $b->price; // will echo 0.2 
echo $price; // will not echo anything unless you set $name to something elsewhere 

echo $name; // will not echo anything unless you set $name to something elsewhere 
echo $a->name; // will give you an error since 'name' is private to the class 
1

如果要設置變量的範圍,則需要像上面那樣在類聲明中聲明它。如果你只是希望變量有一個公共的範圍,你可以通過簡單地利用設置在即時方法中:

$this->variable_name = "value"; 

以那種方式聲明的變量將在類中的任何方法可用以及任何子類(擴展此類的類)中的任何方法。