Wito wa Mbinu Iliyobadilishwa Katika OOP katika PHP
Wakati wa kubadilisha mbinu, mtoto hupoteza
ufikiaji wa mbinu iliyobadilishwa
ya mzazi. Hata hivyo, bado inawezekana
kupata ufikiaji kwayo. Hii inafanywa
kwa kutumia neno kuu parent,
ambacho kinaonyesha darasa la mzazi.
Tuangalie kwa mfano, ambapo tunaweza kuhitaji ufikiaji kwa mbinu ya mzazi. Tuchukulie tuna darasa la mzazi lifuatalo:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Tuchukulie katika darasa la mtoto tumebadilisha mbinu ya mzazi:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'kosa la jina la mwanafunzi';
}
}
}
?>
Inaweza kubainika kuwa katika mbinu iliyobadilishwa wakati sharti linapotimizwa kimsingi kinateketea msimbo wa mbinu ya mzazi. Hii inasababisha urudufishaji usiohitajika wa msimbo.
Inaweza kuepukwa, kama tukiwita mbinu ya mzazi. Hebu tufanye hivyo:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // mbinu ya mzazi
} else {
echo 'kosa la jina la mwanafunzi';
}
}
}
?>
Kuna msimbo ufuatao:
<?php
class User {
private $age;
public function setAge($age) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'unahitaji umri zaidi ya 0';
}
}
}
class Employee extends User {
public function setAge($age) {
if ($age <= 120) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'unahitaji umri zaidi ya 0';
}
} else {
echo 'unahitaji umri chini ya 120';
}
}
}
?>
Katika darasa Employee sahihisha
kiweka-umri, ukitumia
mbinu ya asili ya mzazi.