PHP这个伪变量

时间:2011-03-20 01:21:05

标签: php oop this

从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;这个更改有什么确切的效果,我对对象和类会发生什么感兴趣?

2 个答案:

答案 0 :(得分:7)

您将为本地变​​量年龄分配0。由于它不存在,它将被初始化。一旦构造函数超出范围,就会忘记年龄。班级成员年龄不会改变。

答案 1 :(得分: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;

这给变量一个范围。本的年龄特定于他。这是一个局部变量。