Предности сеттера и гетера у ООП у PHP-у

У претходној лекцији смо направили за свако својство гетер и сетер. Може се поставити питање, чему служе такве компликације, јер у суштини истог ефекта можемо постићи ако својства учинимо јавним, а не приватним.

Ствар је у томе што гетери и сетери имају предност: пре приступа својству можемо извршити неке провере. На пример, у нашем случају при упису имена и презимена можемо проверити, да нова вредност није празан стринг:

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<?php
  $user = new User();
?>

Сада ћемо покушати да уписемо исправну вредност:

php<?php
  $user->setName('john');
?>

А сада ћемо покушати да уписемо неисправну:

php<?php
  $user->setName(''); // грешка
?>
Задание 1

У класи Employee у сетеру године направите проверу да године морају бити од 0 до 120.

Задание 2

У класи Employee у гетеру плате направите тако да при читању плате на крај њене вредности буде додат знак долара.