# Обращение к свойствам класса через $this

Пусть теперь наш метод `show()` выводит нечто полезное - имя пользователя, которое хранится в свойстве `name`. Для того, чтобы обратиться к свойству класса внутри метода этого класса, вместо имени объекта следует писать специальную переменную `$this`:

`<?php class User { public $name; public $age; public function show() { return $this->name; // вернем имя из свойства } } ?>`

Почему внутри класса нельзя написать так - `$user->name`? Потому что это имя переменной снаружи класса и сам класс про это имя ничего не знает (более того, у нас же могут быть несколько объектов одного класса, и у них будут разные имена переменных).

Давайте создадим объект нашего класса и проверим работу метода `show()`:

`<?php class User { public $name; public $age; public function show() { // Возвращаем имя: return $this->name; } } $user = new User; // создаем объект класса $user->name = 'john'; // записываем имя $user->age = 25; // записываем возраст // Вызываем наш метод: echo $user->show(); // выведет 'john' ?>`

Сделайте класс `Employee`, в котором будут следующие свойства - `name`, `age`, `salary`.

Сделайте в классе `Employee` метод `getName`, который будет возвращать имя работника.

Сделайте в классе `Employee` метод `getAge`, который будет возвращать возраст работника.

Сделайте в классе `Employee` метод `getSalary`, который будет возвращать зарплату работника.

Сделайте в классе `Employee` метод `checkAge`, который будет проверять то, что работнику больше `18` лет и возвращать `true`, если это так, и `false`, если это не так.

Создайте два объекта класса `Employee`, запишите в их свойства какие-либо значения. С помощью метода `getSalary` найдите сумму зарплат созданных работников.

## Запись свойств

С помощью `$this` свойства можно не только прочитывать, но и записывать. Давайте сделаем метод `setName()`, который параметром будем принимать имя пользователя и записывать его в свойство `name`:

`<?php class User { public $name; public $age; // Метод для изменения имени юзера: public function setName($name) { $this->name = $name; // запишем новое значение свойства name } } $user = new User; // создаем объект класса $user->name = 'john'; // записываем имя $user->age = 25; // записываем возраст // Установим новое имя: $user->setName('eric'); // Проверим, что имя изменилось: echo $user->name; // выведет 'eric' ?>`

Сделайте класс `User`, в котором будут следующие свойства - `name` и `age`.

Сделайте метод `setAge`, который параметром будет принимать новый возраст пользователя.

Создайте объект класса `User` с именем `'john'` и возрастом `25`. С помощью метода `setAge` поменяйте возраст на `30`. Выведите новое значение возраста на экран.

Модифицируйте метод `setAge` так, чтобы он вначале проверял, что переданный возраст больше или равен `18`. Если это так - пусть метод меняет возраст пользователя, а если не так - то ничего не делает.

Сделайте класс `Employee`, в котором будут следующие свойства работника - `name`, `salary`. Сделайте метод `doubleSalary`, который текущую зарплату будет увеличивать в `2` раза.

Сделайте класс `Rectangle`, в котором в свойствах будут записаны ширина и высота прямоугольника.

В классе `Rectangle` сделайте метод `getSquare`, который будет возвращать площадь этого прямоугольника.

В классе `Rectangle` сделайте метод `getPerimeter`, который будет возвращать периметр этого прямоугольника.

←→
↑