Ανάγνωση μη υπαρκτής ιδιότητας στην αντικειμενοστραφή προγραμματισμό (ΟΟΠ) στην PHP

Στο παράδειγμα που παρουσιάστηκε στο προηγούμενο μάθημα, εφαρμόσαμε τη μαγεία της μεθόδου __get για την παγίδευση πρόσβασης σε ιδιωτικές ιδιότητες. Στην πραγματικότητα, αυτή η μέθοδος μπορεί επίσης να είναι χρήσιμη για την παγίδευση προσβάσεων σε μη υπαρκτές ιδιότητες.

Ας δούμε ένα πρακτικό παράδειγμα. Ας υποθέσουμε ότι έχουμε μια κλάση User με όνομα και επώνυμο, που είναι δημόσιες ιδιότητες:

User.php<?php
  class User
  {
    public $surn;
    public $name;
  }
?>

Ας κάνουμε το αντικείμενο της κλάσης να συμπεριφέρεται σαν να έχει επίσης την ιδιότητα full, που εμφανίζει το όνομα και το επώνυμο του χρήστη. Θα χρησιμοποιήσουμε για αυτό τη μαγική μέθοδο __get:

User.php<?php
  class User
  {
    public $surname;
    public $name;
    public $patronymic;
    
    public function __get($property)
    {
      if ($property == 'full') {
        return $this->surn . ' ' . $this->name;
      }
    }
  }
?>

Ας ελέγξουμε:

index.php<?php
  $user = new User;
  
  $user->surn = 'john';
  $user->name = 'smit';
  
  echo $user->full; // θα εμφανίσει 'john smit'
?>
Задание 1

Δημιουργήστε μια κλάση Date με δημόσιες ιδιότητες year, month και day. Με τη βοήθεια της μαγείας, δημιουργήστε την ιδιότητα weekDay, που θα επιστρέφει την ημέρα της εβδομάδας που αντιστοιχεί στην ημερομηνία.