__invoke მეთოდი

მაგიური მეთოდი __invoke საშუალებას აძლევს კლასის ეგზემპლარს გამოიძახოს როგორც ფუნქცია. როდესაც ობიექტი გამოიძახება როგორც ფუნქცია, PHP ავტომატურად იძახებს ამ მეთოდს. მეთოდს შეუძლია მიიღოს პარამეტრები და დააბრუნოს მნიშვნელობა, როგორც ჩვეულებრივი ფუნქცია.

სინტაქსი

phpclass MyClass {
  public function __invoke(...$args) {
    // რეალიზაცია
  }
}

მაგალითი

შევქმნათ კლასი __invoke მეთოდით და გამოვიძახოთ ობიექტი როგორც ფუნქცია:

php<?php
  class Greeter {
    public function __invoke($name) {
      return "გამარჯობა, $name!";
    }
  }
  
  $greet = new Greeter();
  echo $greet('გიორგი');
?>

კოდის შესრულების შედეგი:

php'გამარჯობა, გიორგი!'

მაგალითი

__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,
    რომელიც საშუალებას აძლევს ობიექტს იყოს წარმოდგენილი სტრიქონის სახით