Setteru un getteru priekšrocības OOP PHP

Iepriekšējā nodarbībā mēs izveidojām katram īpašumam getteri un setteri. Var rasties jautājums, kāpēc ir vajadzīgas tādas sarežģītības, jo faktiski tādu pašu efektu var sasniegt, ja padara īpašumus publiskiem, nevis privātiem.

Lieta ir tāda, ka getteriem un setteriem ir priekšrocība: pirms piekļūšanas īpašumam var veikt dažas pārbaudes. Piemēram, mūsu gadījumā, ierakstot vārdu un uzvārdu, mēs varam pārbaudīt, ka jaunā vērtība nav tukša virkne:

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;
    }
  }
?>

Pārbaudīsim, kā tas darbojas. Vispirms izveidosim klases objektu:

php<?php
  $user = new User();
?>

Tagad mēģināsim ierakstīt korektu vērtību:

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

Un tagad mēģināsim ierakstīt nekorektu:

php<?php
  $user->setName(''); // kļūda
?>
Задание 1

Klasē Employee setterā vecuma veiciet pārbaudi, ka vecumam jābūt no 0 līdz 120.

Задание 2

Klasē Employee getterā algas izdariet tā, lai lasot algu beigās tās vērtībai tiktu pievienota dolāra zīme.