PHP'de OOP'de Setter ve Getter'ların Avantajları
Önceki derste, her özellik için bir getter ve setter yaptık. Şu soru akla gelebilir: Neden böyle karmaşıklıklara ihtiyaç var? Çünkü aslında aynı etki, özellikleri özel (private) yerine genel (public) yaparak da elde edilebilir.
Olay şu ki, getter ve setter'ların bir avantajı var: Bir özelliğe erişmeden önce bazı kontroller yapılabilir. Örneğin, bizim durumumuzda isim ve soyisimi yazdırırken, yeni değerin boş bir string olmadığını kontrol edebiliriz:
<?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;
}
}
?>
Bunun nasıl çalıştığını test edelim. Öncelikle sınıfın bir nesnesini oluşturalım:
<?php
$user = new User();
?>
Şimdi doğru bir değer yazmayı deneyelim:
<?php
$user->setName('john');
?>
Ve şimdi de yanlış bir değer yazmayı deneyelim:
<?php
$user->setName(''); // hata
?>
Employee sınıfında, yaş setter'ında
yaşın 0 ile 120 arasında
olması gerektiğini kontrol edin.
Employee sınıfında, maaş getter'ında
maaş okunduğunda, değerinin sonuna
dolar işareti eklenmesini sağlayın.