Методи __get

Методи __get ба таври худкор даъват карда мешавад, вақте ки кӯшиш барои гирифтани қимати як хусусияти мавҷуднабуда ё дастраснашудаи объект анҷом дода мешавад. Ин методи маҷозӣ як параметр қабул мекунад - nomi хусусияти дархостшуда.

Синтаксис

phppublic function __get(string $name) {
  // амалӣ кардан
}

Мисол

Синфиеро бо методи __get месозем, ки барои хусусиятҳои мавҷуднабуда қиматҳоро бармегардонад:

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;
?>

Натиҷаи иҷрои код:

php'John'

Мисол

Методи __getро метавон барои амалӣ кардани хусусиятҳои динамикӣ истифода бурд:

php<?php
  class DynamicProperties {
    public function __get($name) {
      return "Қимати динамикӣ барои {$name}";
    }
  }
  
  $obj = new DynamicProperties();
  echo $obj->test;
?>

Натиҷаи иҷрои код:

php'Қимати динамикӣ барои test'

Ҳамчунин нигаред

  • методи __set,
    ки ҳангоми таъин кардани хусусияти мавҷуднабуда даъват карда мешавад
  • методи __call,
    ки ҳангоми даъват кардани методи мавҷуднабуда даъват карда мешавад