__invoke методи

Магик метод __invoke класс нусхасини функция каби чакириш имконини беради. Объект функция каби чакирилганда, PHP автоматик равишда бу методни чакиради. Метод параметрлар қабул қилиши ва қиймат қайтариши мумкин, худди оддий функция каби.

Синтаксис

phpclass MyClass {
  public function __invoke(...$args) {
    // амалга ошириш
  }
}

Мисол

__invoke методи бор класс яратамиз ва объектни функция каби чакирамиз:

php<?php
  class Greeter {
    public function __invoke($name) {
      return "Hello, $name!";
    }
  }
  
  $greet = new Greeter();
  echo $greet('John');
?>

Кодни ишга тушириш натижаси:

php'Hello, John!'

Мисол

__invoke ни бир нечта параметрлар билан ишлатиш:

php<?php
  class Calculator {
    public function __invoke($a, $b) {
      return $a + $b;
    }
  }
  
  $calc = new Calculator();
  echo $calc(5, 3);
?>

Кодни ишга тушириш натижаси:

php8

Мисол

is_callable ёрдамида объектнинг чакирилиши мумкинлигини текшириш:

php<?php
  class Test {}
  
  $obj1 = new Test();
  $obj2 = new class { public function __invoke() {} };
  
  var_dump(is_callable($obj1));
  var_dump(is_callable($obj2));
?>

Кодни ишга тушириш натижаси:

phpfalse
true

Шунингдек кўринг

  • метод __construct,
    у класснинг конструкторидир
  • метод __toString,
    у объектни сатр кўринишида ифодалаш имконини беради