Thirrja e metodës së ripërcaktuar në OOP në PHP
Gjatë ripërcaktimit, fëmija humb
qasjen në metodën e ripërcaktuar
të prindit. Megjithatë, mund të merret
qasja në të. Kjo bëhet
duke përdorur fjalën kyçe parent,
e cila tregon te klasa prind.
Le të shohim një shembull kur mund të na duhet qasje në metodën prind. Le të supozojmë se kemi këtë klasë-prind:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Le të supozojmë se në klasën-fëmijë kemi ripërcaktuar metodën e prindit:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'gabim në emrin e studentit';
}
}
}
?>
Mund të vërehet se në metodën e ripërcaktuar gjatë plotësimit të kushtit në thelb ekzekutohet kodi i metodës prind. Rezulton një dublim i panevojshëm kodi.
Mund të shpëtohemi prej tij nëse thirret metoda e prindit. Le ta bëjmë këtë:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // metoda e prindit
} else {
echo 'gabim në emrin e studentit';
}
}
}
?>
Jepet kodi në vijim:
<?php
class User {
private $age;
public function setAge($age) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'duhet mosha më shumë se 0';
}
}
}
class Employee extends User {
public function setAge($age) {
if ($age <= 120) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'duhet mosha më shumë se 0';
}
} else {
echo 'duhet mosha më pak se 120';
}
}
}
?>
Në klasën Employee korrigjoni
(thjeshtoni) vendosësin e moshës, duke përdorur
metodën origjinale të prindit.