Метад __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,
    якая дазваляе аб'екту быць прадстаўленым у выглядзе радка