Методи __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

Намуна

Санҷидани он, ки оё объект бо воситаи 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,
    ки имкон медиҳад объект ҳамчун сатр тасвир шавад