__invoke metodi

__invoke sehrli metodi klass namunasini funksiya sifatida chaqirilishiga imkon beradi. Ob'ekt funksiya sifatida chaqirilganda, PHP avtomatik ravishda ushbu metodni chaqiradi. Metod oddiy funksiya kabi parametrlarni qabul qilishi va qiymat qaytarishi mumkin.

Sintaksis

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

Misol

__invoke metodiga ega klass yaratamiz va ob'ektni funksiya sifatida chaqiramiz:

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

Kodni bajarish natijasi:

php'Hello, John!'

Misol

__invoke metodini bir nechta parametrlar bilan qo'llash:

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

Kodni bajarish natijasi:

php8

Misol

is_callable yordamida ob'ektning chaqirilishi mumkinligini tekshirish:

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

Kodni bajarish natijasi:

phpfalse
true

Shuningdek qarang

  • __construct metodi,
    bu klass konstruktori hisoblanadi
  • __toString metodi,
    bu ob'ektning satr ko'rinishida ifodalanishiga imkon beradi