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
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
$user = new User();
?>
Tani le të përpiqemi të shkruajmë vlerë korrekte:
<?php
$user->setName('john');
?>
Dhe tani le të përpiqemi të shkruajmë vlerë jokorrekte:
<?php
$user->setName(''); // gabim
?>
Në klasën Employee në setter
e moshës bëni kontrollin që
mosha duhet të jetë
nga 0 deri në 120.
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.