Memanggil Metode yang Dioverride dalam OOP di PHP
Saat override, child class kehilangan
akses ke metode parent yang dioverride.
Namun, akses ke metode tersebut tetap
bisa didapatkan. Hal ini dilakukan
dengan menggunakan kata kunci parent,
yang merujuk ke parent class.
Mari kita lihat contoh kapan kita mungkin memerlukan akses ke metode parent. Misalkan kita memiliki parent class berikut:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Misalkan kita di child class mengoverride metode parent:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Dapat dilihat bahwa dalam metode yang dioverride saat kondisi terpenuhi, pada dasarnya kode metode parent yang dijalankan. Terjadi duplikasi kode yang tidak perlu.
Kita dapat menghilangkannya dengan memanggil metode parent. Mari kita lakukan:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // metode parent
} else {
echo 'student name error';
}
}
}
?>
Diberikan kode berikut:
<?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';
}
}
}
?>
Di class Employee, perbaiki
dan sederhanakan setter usia, dengan menggunakan
metode asli parent.