__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,
    бул объектке сап түрүндө көрсөтүлүүгө мүмкүнчүлүк берет