Njia __invoke

Njia ya kichawi __invoke huruhusu mfano wa darasa kuitwa kama kitendo. Wakati kitu kikiitwa kama kitendo, PHP automatikali huita njia hii. Njia inaweza kukubali vigezo na kurudisha thamani, kama kitendo cha kawaida.

Syntax

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

Mfano

Tutengeneze darasa lenye njia __invoke na tuite kitu kama kitendo:

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

Matokeo ya kutekeleza kodi:

php'Hello, John!'

Mfano

Matumizi ya __invoke na vigezo vingi:

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

Matokeo ya kutekeleza kodi:

php8

Mfano

Kukagua ikiwa kitu kinaweza kutekelezwa kwa kutumia 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));
?>

Matokeo ya kutekeleza kodi:

phpfalse
true

Angalia Pia

  • njia __construct,
    ambayo ni mkabidhi wa darasa
  • njia __toString,
    ambayo huruhusu kitu kuwakilishwa kama mfuatano wa herufi