Metoden __invoke

Den magiske metode __invoke gør det muligt for en instans af en klasse at blive kaldt som en funktion. Når et objekt kaldes som en funktion, kalder PHP automatisk denne metode. Metoden kan tage parametre og returnere en værdi, som en almindelig funktion.

Syntaks

phpclass MyClass {
  public function __invoke(...$args) {
    // implementering
  }
}

Eksempel

Lad os oprette en klasse med metoden __invoke og kalde objektet som en funktion:

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

Resultat af kodeudførelse:

php'Hej, John!'

Eksempel

Brug af __invoke med flere parametre:

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

Resultat af kodeudførelse:

php8

Eksempel

Tjek om et objekt er kaldeligt ved hjælp af 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));
?>

Resultat af kodeudførelse:

phpfalse
true

Se også

  • metoden __construct,
    som er klassens konstruktør
  • metoden __toString,
    som gør det muligt for et objekt at blive repræsenteret som en streng