Metoden __invoke

Den magiska metoden __invoke gör att en instans av en klass kan anropas som en funktion. När ett objekt anropas som en funktion, så anropar PHP automatiskt denna metod. Metoden kan ta parametrar och returnera ett värde, precis som en vanlig funktion.

Syntax

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

Exempel

Låt oss skapa en klass med metoden __invoke och anropa objektet som en funktion:

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

Resultat av kodkörning:

php'Hello, John!'

Exempel

Användning av __invoke med flera parametrar:

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

Resultat av kodkörning:

php8

Exempel

Kontrollera om ett objekt är anropsbart med hjälp av 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 av kodkörning:

phpfalse
true

Se även

  • metoden __construct,
    som är klassens konstruktor
  • metoden __toString,
    som gör att objektet kan representeras som en sträng