Metode __invoke

Maģiskā metode __invoke ļauj klases instances tikt izsauktai kā funkcijai. Kad objekts tiek izsaukts kā funkcija, PHP automātiski izsauc šo metodi. Metode var pieņemt parametrus un atgriezt vērtību, tāpat kā parasta funkcija.

Sintakse

phpclass MyClass {
  public function __invoke(...$args) {
    // implementācija
  }
}

Piemērs

Izveidosim klasi ar metodi __invoke un izsauksim objektu kā funkciju:

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

Koda izpildes rezultāts:

php'Hello, John!'

Piemērs

__invoke lietošana ar vairākiem parametriem:

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

Koda izpildes rezultāts:

php8

Piemērs

Pārbaude, vai objekts ir izsaukams, izmantojot 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));
?>

Koda izpildes rezultāts:

phpfalse
true

Skatiet arī

  • metode __construct,
    kura ir klases konstruktors
  • metode __toString,
    kura ļauj objektam tikt attēlotam kā virknei