Metodas __get

Metodas __get automatiškai iškviečiamas bandant gauti neegzistuojančios arba neprieinamos objekto savybės reikšmę. Šis magiškas metodas priima vieną parametrą - prašomos savybės pavadinimą.

Sintaksė

phppublic function __get(string $name) {
  // realizacija
}

Pavyzdys

Sukurkime klasę su metodu __get, kuris grąžins reikšmes neegzistuojančioms savybėms:

php<?php
  class User {
    private $data = [
      'name' => 'John',
      'age' => 30
    ];
    
    public function __get($name) {
      if (array_key_exists($name, $this->data)) {
        return $this->data[$name];
      }
      return null;
    }
  }
  
  $user = new User();
  echo $user->name;
?>

Kodo vykdymo rezultatas:

php'John'

Pavyzdys

Metodas __get gali būti naudojamas dinaminėms savybėms implementuoti:

php<?php
  class DynamicProperties {
    public function __get($name) {
      return "Dinaminė reikšmė {$name} savybei";
    }
  }
  
  $obj = new DynamicProperties();
  echo $obj->test;
?>

Kodo vykdymo rezultatas:

php'Dinaminė reikšmė test savybei'

Taip pat žiūrėkite

  • metodas __set,
    kuris iškviečiamas nustatant neegzistuojančią savybę
  • metodas __call,
    kuris iškviečiamas iškviečiant neegzistuojantį metodą