__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 әдісі,
    ол объектінің жол түрінде көрсетілуін қамтамасыз етеді