__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,
    වස්තුවක් නූලක් ලෙස නිරූපණය කිරීමට ඉඩ සලසයි