Nem létező tulajdonság olvasása OOP-ban PHP-ben

Az előző leckében bemutatott példában a __get mágikus metódust alkalmaztuk a privát tulajdonságokhoz való hozzáférés elfogására. Valójában ez a metódus hasznos lehet nem létező tulajdonságokhoz való hozzáférés elfogására is.

Nézzünk egy gyakorlati példát. Legyen egy User osztályunk keresztnévvel és vezetéknévvel, amelyek nyilvános tulajdonságok:

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

Tegyük úgy, hogy az osztály objektusa úgy viselkedjen, mintha lenne egy full tulajdonsága is, ami megjeleníti a felhasználó kereszt- és vezetéknevét. Használjuk ehhez a mágikus __get metódustunkat:

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

Teszteljük:

index.php<?php
  $user = new User;
  
  $user->surn = 'john';
  $user->name = 'smit';
  
  echo $user->full; // kiírja 'john smit'
?>
Задание 1

Készítsen egy Date osztályt nyilvános tulajdonságokkal: year, month és day. Varázslattal készítse el a weekDay tulajdonságot, amely visszaadja a dátumnak megfelelő hét napját.