Переменная $this - это псевдопеременная, которой нельзя присваивать никакие значения. Эта переменная выполняет весьма своеобразную роль в коде.
Слово "this" в переводе с английского означает "этот"; в коде PHP переменная $this применяется в значении $этот_объект и ссылается на тот объект, в коде которого она используется, т.е. проще говоря, заменяет название этого объекта. Для чего это нужно станет ясно из ниже приведённого примера:
1 class Product {
2 private $kind;
3 private $cost;
4 public function construct ($kind = ' ', $cost = 0) {
5 $this -> kind = $kind;
6 $this -> cost = $cost;
7 }
8 }
9 $a1 = new Product ('Meet', 400);
10 $b1 = $a1 -> kind;
11 $b2 = $a1 -> cost;
Рассмотрим код подробно.
Строки 1-8: Создаётся класс Product ("Продукты").
Строки 2,3: Создаются переменные $kind ("Вид") и $cost ("Стоимость").
Строки 4-7: Создаётся функция-конструктор, задача которой при создании объекта (т.е. экземпляра класса) получать значения свойств для этого объекта.
Именно здесь и становится понятен смысл применения этой псевдопеременной: в выражении $this –> kind = $kind свойство kind объекта, в котором будет использован класс, получает значение переменной $kind, а на сам объект ссылается переменная $this, т.е. это можно было бы записать как $этот_объект –> kind = $kind.
Строка 9: Создаёт объект $a1 и присваивает ему значения 'Meat' ("Мясо") и 400.
При создании объекта псевдопеременная $this принимает значение a1 в соответствии с названием создаваемого объекта. Например, выражение, с помощью которого объект с названием a1 получает значение для свойства kind выглядело бы так: $a1 –> kind = $kind.
Строки 10-11: Переменные $b1 и $b2 получают значение соответствующего свойства объекта $a1.
Теперь становится понятно, почему псевдопеременной $this ничего нельзя присваивать: эта переменная сама принимает соответствующие значения.
