2011-03-20 37 views
2

從PHP手冊:PHP這個僞變量

class Bear { 
// define properties 
public $name; 
public $weight; 
public $age; 
public $sex; 
public $colour; 

// constructor 
public function __construct() { 
    $this->age = 0; 
    $this->weight = 100; 
} 

我感興趣的,如果行對象和類方面會發生什麼:$this->age = 0;改爲$age = 0;這一變化有什麼確切的療效?

+0

您可能的意思是'$ age = 0;',而不是'age = 0;'。 – icktoofay 2011-03-20 01:25:37

+0

@icktoofay - 多數民衆贊成1.26上午會做一個男人 – benhowdle89 2011-03-20 01:26:55

回答

7

您將0分配給局部變量年齡。由於它不存在,它將被初始化。一旦構造函數超出範圍,年齡將被遺忘。集體成員年齡不會改變。

1

類變量「age」將不受此更改的影響。這裏有一個很好的例子,爲什麼是這樣的話:

class Bear { 
    // define properties 
    public $name; 
    public $weight; 
    public $age; 
    public $sex; 
    public $colour; 

    // constructor 
    public function __construct($age) { 
     $age = $age * 2; // Convert to bear years. 
     $this->age = $age; 
     $this->weight = 100; 
    } 
} 

現在,當我們創建熊,我們必須通過構造函數來設置歲的選項:

$ben = new Bear(8); 

我們還可以修改熊的年齡與我們在構造函數中所做的大致相同:

$ben->age = 12; 

這給變量一個範圍。本的年齡是特定於他的。這是一個局部變量。

+0

本的年齡將是16. :) – Tpojka 2015-05-26 01:13:31