परिभाषा और उपयोग
कॉलबैक PHP में एक छद्म-प्रकार है। PHP 5.4 के साथ, कॉलेबल टाइप हिंट पेश किया गया है, जो कॉलबैक के समान है। जब किसी ऑब्जेक्ट को कॉलेबल के रूप में पहचाना जाता है, तो इसका मतलब है कि इसे एक फ़ंक्शन के रूप में उपयोग किया जा सकता है जिसे कॉल किया जा सकता है। एक कॉलेबल बिल्ट-इन या उपयोगकर्ता-परिभाषित फ़ंक्शन या किसी क्लास के अंदर एक विधि हो सकती है।
is_callable() फ़ंक्शन का उपयोग यह सत्यापित करने के लिए किया जा सकता है कि पहचानकर्ता कॉलेबल है या नहीं। PHP में call_user_func() होता है जो पैरामीटर के रूप में फ़ंक्शन का नाम स्वीकार करता है।
उदाहरण
उदाहरण 1: बिल्ट-इन फ़ंक्शन कॉलेबल है
<?php
var_dump(is_callable("abs"));
?>
आउटपुट
bool(true)
उदाहरण 2: उपयोगकर्ता-परिभाषित फ़ंक्शन कॉलेबल है
<?php
function myfunction() {
echo "Hello World";
}
echo is_callable("myfunction") . "\n";
call_user_func("myfunction");
?>
आउटपुट
1 Hello World
उदाहरण 3: ऑब्जेक्ट विधि को कॉलेबल के रूप में पास करना
ऑब्जेक्ट विधि को कॉलेबल के रूप में पास करने के लिए, ऑब्जेक्ट और उसकी विधि को एक सरणी में दो तत्वों के रूप में पास किया जाता है:
<?php
class myclass {
function mymethod() {
echo "This is a callable\n";
}
}
$obj = new myclass();
call_user_func(array($obj, "mymethod")); // सरणी लिटरल रूप में पास की गई
call_user_func([$obj, "mymethod"]); // छोटा सरणी सिंटैक्स
?>
आउटपुट
This is a callable This is a callable
उदाहरण 4: स्टैटिक विधि को कॉलेबल के रूप में पास करना
किसी क्लास की स्टैटिक विधि को भी कॉलेबल के रूप में पास किया जा सकता है। ऑब्जेक्ट के बजाय, क्लास का नाम सरणी पैरामीटर में पहला तत्व होना चाहिए:
<?php
class myclass {
static function mymethod() {
echo "This is a callable\n";
}
}
$obj = new myclass();
call_user_func(array("myclass", "mymethod"));
// स्कोप रिज़ॉल्यूशन ऑपरेटर का उपयोग
call_user_func("myclass::mymethod");
?>
आउटपुट
This is a callable This is a callable