Обращение к свойствам класса через $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
, который будет возвращать
периметр этого прямоугольника.