PHP OOP-da kakylan edilen metoda çagyryş
Kakylama edilende, nesil degişen we kakylan edilen metodo
giremez. Emma, şonda hem ona girmek mümkin. Bu
parent açary sözü bilen amala aşyrylýar,
onyň üsti bilen ene-atanyň klasyna görkezilýär.
Nusaýa seredeliň, nädip ene-atanyň metoduna girmek zerur bolup biler. Aşakdaky ýaly ene-atanyň klassy bar diýeliň:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Diýeliň nesil degişen klasda ene-atanyň metoduny kakyladyk:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Kakylan edilen metodda şert ýerine ýetirilende esasan ene-atanyň metodynyň kody ýerine ýetirilýändigini görüp bolýar. Gereksiz kodyň dublikasiýasy bolup durýar.
Eger ene-atanyň metodyny çağırsak, bu dublikasiýadan gutulyp bileris. Geliň muny edeliň:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // ene-atanyň metodu
} else {
echo 'student name error';
}
}
}
?>
Aşakdaky kod berlen:
<?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 klasynda ýaş setterini düzediň we
ene-atanyň orignal metodyny ulanyp ýönekeýleşdiriň.