PHP это псевдо переменная - PullRequest
2 голосов
/ 20 марта 2011

Из руководства по 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 ]

7 голосов
/ 20 марта 2011

Вы назначите 0 для локальной переменной возраста.Поскольку он не существует, он будет инициализирован.Как только конструктор выйдет из области видимости, возраст будет забыт.Возраст ученика не изменится.

1 голос
/ 20 марта 2011

Переменная класса не будет затронута изменением. Вот хороший пример того, почему это так:

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;

Это дает переменной область видимости. Возраст Бена специфичен для него. Это локальная переменная.

...