PHP'de OOP'de Geçersiz Kılınan Metotların Çağrılması
Geçersiz kılma işleminde, çocuk sınıf
ebeveynin geçersiz kılınan metoduna
erişimini kaybeder. Ancak, yine de
bu metoda erişmek mümkündür. Bu,
ebeveyn sınıfı işaret eden
parent anahtar kelimesi
kullanılarak yapılır.
Ebeveyn metoduna erişime ne zaman ihtiyaç duyabileceğimizi bir örnekle görelim. Aşağıdaki ebeveyn sınıfa sahip olduğumuzu varsayalım:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Çocuk sınıfta ebeveynin metodunu geçersiz kıldığımızı varsayalım:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Geçersiz kılınan metotta, koşul sağlandığında temelde ebeveyn metodunun kodunun çalıştırıldığı fark edilebilir. Bu, gereksiz kod tekrarına yol açar.
Ebeveyn metodunu çağırarak bundan kurtulabiliriz. Bunu yapalım:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // ebeveyn metodu
} else {
echo 'student name error';
}
}
}
?>
Aşağıdaki kod verilmiştir:
<?php
class User {
private $age;
public function setAge($age) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'need age more 0';
}
}
}
class Employee extends User {
public function setAge($age) {
if ($age <= 120) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'need age more 0';
}
} else {
echo 'need age less 120';
}
}
}
?>
Employee sınıfında,
yaş setter'ını, orijinal ebeveyn
metodunu kullanarak düzeltin
(sadeleştirin).