PHP-də OOP-də mövcud olmayan xassənin oxunması

Əvvəlki dərsdə verilmiş nümunədə biz __get sehrli metodundan gizli xassələrə müraciəti tutmaq üçün istifadə etdik. Əslində bu metod həm də mövcud olmayan xassələrə müraciətləri tutmaq üçün faydalı ola bilər.

Gəlin praktiki bir nümunəyə baxaq. Tutaq ki, bizdə adı və soyadı ictimai xassələr olan User sinfi var:

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

Gəlin elə edək ki, sinfin obyekti elə davransın ki, guya onun həmçinin istifadəçinin adını və soyadını göstərən full xassəsi də var. Bunun üçün bizim sehrli metodumuzdan __get istifadə edək:

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

Yoxlayaq:

index.php<?php
  $user = new User;
  
  $user->surn = 'john';
  $user->name = 'smit';
  
  echo $user->full; // 'john smit' çap edəcək
?>
Задание 1

Date sinfini ictimai xassələrlə year, month və day yaradın. Sehrdən istifadə edərək, tarixə uyğun gələn həftənin gününü qaytaran weekDay xassəsini yaradın.