2011-03-20 39 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