Ανάγνωση μη υπαρκτής ιδιότητας στην αντικειμενοστραφή προγραμματισμό (ΟΟΠ) στην PHP
Στο παράδειγμα που παρουσιάστηκε στο προηγούμενο μάθημα, εφαρμόσαμε τη μαγεία της μεθόδου
__get για την παγίδευση πρόσβασης σε
ιδιωτικές ιδιότητες. Στην πραγματικότητα, αυτή η μέθοδος
μπορεί επίσης να είναι χρήσιμη για την παγίδευση
προσβάσεων σε μη υπαρκτές ιδιότητες.
Ας δούμε ένα πρακτικό παράδειγμα. Ας υποθέσουμε
ότι έχουμε μια κλάση User με όνομα και
επώνυμο, που είναι δημόσιες
ιδιότητες:
<?php
class User
{
public $surn;
public $name;
}
?>
Ας κάνουμε το αντικείμενο της κλάσης
να συμπεριφέρεται σαν να έχει επίσης την ιδιότητα
full, που εμφανίζει το όνομα και το επώνυμο του χρήστη.
Θα χρησιμοποιήσουμε για αυτό τη μαγική μέθοδο
__get:
<?php
class User
{
public $surname;
public $name;
public $patronymic;
public function __get($property)
{
if ($property == 'full') {
return $this->surn . ' ' . $this->name;
}
}
}
?>
Ας ελέγξουμε:
<?php
$user = new User;
$user->surn = 'john';
$user->name = 'smit';
echo $user->full; // θα εμφανίσει 'john smit'
?>
Δημιουργήστε μια κλάση Date με δημόσιες ιδιότητες
year, month και day.
Με τη βοήθεια της μαγείας, δημιουργήστε την ιδιότητα weekDay,
που θα επιστρέφει την ημέρα της εβδομάδας που αντιστοιχεί
στην ημερομηνία.