Παρακάλυψη μεθόδων γονέα στην αντικειμενοστρεφή προγραμματισμό στην PHP
Μια παιδική κλάση μπορεί να παρακάμψει μια μέθοδο του γονέα, δημιουργώντας μια μέθοδο με το ίδιο όνομα. Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε την ακόλουθη γονική κλάση:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Ας δημιουργήσουμε στην παιδική κλάση μια μέθοδο με το ίδιο όνομα:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Συνήθως, η παράκαμψη μεθόδων γονέα χρειάζεται για να αλλάξει ή να συμπληρωθεί η συμπεριφορά αυτής της μεθόδου. Ας προσθέσουμε στην περίπτωσή μας έναν έλεγχο μήκους του ονόματος:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Ας βεβαιωθούμε ότι καλείται ακριβώς η παρακαμφθείσα μέθοδος. Αρχικά, ας δημιουργήσουμε ένα αντικείμενο της παιδικής κλάσης:
<?php
$student = new Student;
?>
Τώρα ας καλέσουμε τη μέθοδό μας, περνώντας σε αυτήν μια σωστή τιμή:
<?php
$student->setName('john');
?>
Και τώρα ας καλέσουμε τη μέθοδο, περνώντας σε αυτήν μια λανθασμένη τιμή. Ως αποτέλεσμα θα δούμε μια εμφανιζόμενη εξαίρεση:
<?php
$student->setName(''); // σφάλμα
?>
Στην κλάση User φτιάξτε
μια μέθοδο λήψης και μια μέθοδο ρύθμισης για την ηλικία.
Στην κλάση Employee παρακάμψτε
τη μέθοδο ρύθμισης ηλικίας και κάντε σε αυτήν
έναν έλεγχο ότι η ηλικία είναι από
18 έως 65 ετών.