Η μέθοδος __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

Παράδειγμα

Έλεγχος αν ένα αντικείμενο είναι callable χρησιμοποιώντας την 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,
    που επιτρέπει σε ένα αντικείμενο να αναπαρασταθεί ως συμβολοσειρά