Përparësitë e Setters dhe Getters në OOP në PHP

Në mësimin e mëparshëm ne krijuam për çdo veti një getter dhe setter. Mund të lindë pyetja, pse janë të nevojshme komplikime të tilla, në fund të fundit të njëjtin efekt mund ta arrini nëse i bëni vetitë publike, jo private.

Çështja është se getters dhe setters kanë përparësi: para aksesimit te vetia mund të kryhen disa kontroll. Për shembull, në rastin tonë ne gjatë shkrimit të emrit dhe mbiemrit mund të kontrollojmë, që vlera e re të mos jetë varg bosh:

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

Le të kontrollojmë se si funksionon kjo. Së pari le të krijojmë një objekt të klasës:

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

Tani le të përpiqemi të shkruajmë vlerë korrekte:

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

Dhe tani le të përpiqemi të shkruajmë vlerë jokorrekte:

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

Në klasën Employee në setter e moshës bëni kontrollin që mosha duhet të jetë nga 0 deri në 120.

Задание 2

Në klasën Employee në getter e pagës bëni që gjatë leximit të pagës në fund të vlerës së saj të shtohet shenja e dollarit.