__invoke metodu

Majik metodu __invoke klasynyň nusgasynyň funksiýa hökmünde çagyrylmagyna mümkinçilik berýär. Obyekt funksiýa hökmünde çagyrylanynda, PHP awtomatik bu metodu çagyryr. Metod adaty funksiýa ýaly parametrleri kabul edip we bahany yzyna gaýtaryp biler.

Sintaksis

phpclass MyClass {
  public function __invoke(...$args) {
    // amala aşyrylyşy
  }
}

Mysal

__invoke metody bilen klas döredeliň we obyekti funksiýa hökmünde çagyrýalyň:

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

Kodyň ýerine ýetiriliş netijesi:

php'Hello, John!'

Mysal

__invoke-y birnäçe parametr bilen ulanmak:

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

Kodyň ýerine ýetiriliş netijesi:

php8

Mysal

Obyektiň çagyrylyp bilinýändigini is_callable arkaly barlamak:

php<?php
  class Test {}
  
  $obj1 = new Test();
  $obj2 = new class { public function __invoke() {} };
  
  var_dump(is_callable($obj1));
  var_dump(is_callable($obj2));
?>

Kodyň ýerine ýetiriliş netijesi:

phpfalse
true

Şeýle-de görüň

  • metodu __construct,
    klasyň gurujysy bolýar
  • metodu __toString,
    obyektiň setir görnüşinde görkezilmegine mümkinçilik berýär