Voordelen van setters en getters in OOP in PHP
In de vorige les hebben we voor elke eigenschap een getter en setter gemaakt. Er kan zich de vraag voordoen, waarom zijn dergelijke complexiteiten nodig, want in feite kan hetzelfde effect bereikt worden door de eigenschappen publiek te maken, in plaats van privé.
Het punt is dat getters en setters een voordeel hebben: voor de toegang tot een eigenschap kunnen er enkele controles worden uitgevoerd. In ons geval kunnen we bijvoorbeeld bij het opslaan van de voornaam en achternaam controleren dat de nieuwe waarde geen lege string is:
<?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;
}
}
?>
Laten we testen hoe dit werkt. Laten we eerst een object van de klasse aanmaken:
<?php
$user = new User();
?>
Laten we nu proberen een correcte waarde op te slaan:
<?php
$user->setName('john');
?>
Laten we nu proberen een incorrecte waarde op te slaan:
<?php
$user->setName(''); // fout
?>
Maak in de klasse Employee in de setter
voor leeftijd een controle zodat
de leeftijd moet zijn
van 0 tot 120.
Pas in de klasse Employee de getter
voor salaris aan, zodat
bij het uitlezen van het salaris aan het einde
een dollarteken wordt toegevoegd.