__invoke နည်းလမ်း

မှော်ဆန်သော နည်းလမ်း __invoke သည် class ၏ နမူနာတစ်ခုကို လုပ်ဆောင်ချက်တစ်ခုအနေဖြင့် ခေါ်ယူနိုင်စေပါသည်။ အရာဝတ္ထုတစ်ခုကို လုပ်ဆောင်ချက်တစ်ခုအနေဖြင့် ခေါ်ယူသောအခါ၊ PHP သည် ဤနည်းလမ်းကို အလိုအလျောက် ခေါ်ယူပါသည်။ ဤနည်းလမ်းသည် သာမန်လုပ်ဆောင်ချက်တစ်ခုကဲ့သို့ပင် သတ်မှတ်ချက်များ လက်ခံနိုင်ပြီး တန်ဖိုးတစ်ခု ပြန်ပေးနိုင်ပါသည်။

စာကြည့်ပုံစံ

phpclass MyClass {
  public function __invoke(...$args) {
    // အကောင်အထည်ဖော်ခြင်း
  }
}

နမူနာ

နည်းလမ်း __invoke ပါရှိသော class တစ်ခုကို ဖန်တီးပြီး အရာဝတ္ထုကို လုပ်ဆောင်ချက်တစ်ခုအနေဖြင့် ခေါ်ယူကြပါစို့။

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,
    အရာဝတ္ထု class ၏ ဖန်တီးသူ ဖြစ်ပါသည်။
  • နည်းလမ်း __toString,
    အရာဝတ္ထုကို စာသားအနေဖြင့် ကိုယ်စားပြုခွင့်ပြုပါသည်။