Преимущества сеттеров и геттеров в ООП в PHP
В предыдущем уроке мы сделали для каждого свойства геттер и сеттер. Может возникнуть вопрос, зачем нужные такие сложности, ведь фактически того же самого эффекта можно достичь, если сделать свойства публичными, а не приватными.
Дело в том, что геттеры и сеттеры имеют преимущество: перед обращением к свойству можно выполнять некоторые проверки. К примеру, в нашем случае мы при записи имени и фамилии можем проверить, что новое значение не является пустой строкой:
<?php
class User {
private $name;
private $surn;
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'name is incorrect';
}
}
public function setSurn($surn) {
if (strlen($surn) > 0) {
$this->surn = $surn;
} else {
echo 'surn is incorrect';
}
}
public function getName() {
return $this->name;
}
public function getSurn() {
return $this->surn;
}
}
?>
Давайте проверим, как это работает. Для начала создадим объект класса:
<?php
$user = new User();
?>
Теперь попробуем записать корректное значение:
<?php
$user->setName('john');
?>
А теперь попробуем записать некорректное:
<?php
$user->setName(''); // ошибка
?>
В классе Employee в сеттере
возраста сделайте проверку на то,
что возраст должен быть
от 0 до 120.
В классе Employee в геттере
зарплаты сделайте так, чтобы
при чтении зарплаты в конец ее
значения добавлялся знак доллара.