Metoden __invoke

Den magiske metoden __invoke lar en instans av en klasse bli kalt som en funksjon. Når et objekt kalles som en funksjon, vil PHP automatisk kalle denne metoden. Metoden kan ta parametere og returnere en verdi, akkurat som en vanlig funksjon.

Syntaks

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

Eksempel

La oss opprette en klasse med metoden __invoke og kalle objektet som en funksjon:

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

Resultat av kjøring av koden:

php'Hello, John!'

Eksempel

Bruk av __invoke med flere parametere:

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

Resultat av kjøring av koden:

php8

Eksempel

Sjekk om et objekt er kallbart ved hjelp 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 kjøring av koden:

phpfalse
true

Se også

  • metoden __construct,
    som er konstruktøren til klassen
  • metoden __toString,
    som lar et objekt bli representert som en streng