Fordele ved setters og getters i OOP i PHP
I den forrige lektion lavede vi for hver egenskab en getter og setter. Der kan opstå et spørgsmål om, hvorfor sådanne komplikationer er nødvendige, for faktisk kan den samme effekt opnås, hvis man gør egenskaberne offentlige i stedet for private.
Det skyldes, at getters og setters har en fordel: før adgang til egenskaben kan man udføre visse kontroller. For eksempel kan vi i vores tilfælde ved indtastning af fornavn og efternavn kontrollere, at den nye værdi ikke er en tom streng:
<?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;
}
}
?>
Lad os teste, hvordan dette fungerer. Lad os først oprette et objekt af klassen:
<?php
$user = new User();
?>
Lad os nu prøve at indtaste en korrekt værdi:
<?php
$user->setName('john');
?>
Og lad os nu prøve at indtaste en ukorrekt værdi:
<?php
$user->setName(''); // fejl
?>
I klassen Employee skal du i setteren for
alder tilføje en kontrol for, at
alderen skal være
fra 0 til 120.
I klassen Employee skal du i getteren for
løn gøre sådan, at
når lønnen læses, tilføjes et dollartegn til slutningen af dens
værdi.