কম্পিউটার টিউটোরিয়াল

PHP কলব্যাক/কলেবল (Callbacks/Callables)


সংজ্ঞা এবং ব্যবহার

কলব্যাক PHP-তে একটি সিউডো-টাইপ। PHP 5.4-এ Callable টাইপ হিন্ট যোগ করা হয়েছে, যা কলব্যাকের মতোই। কোনো অবজেক্ট কলেবল (callable) হিসেবে চিহ্নিত হলে তার মানে সেটি একটি ফাংশন হিসেবে ব্যবহার করা যাবে যেটিকে কল করা যায়। একটি কলেবল হতে পারে বিল্ট-ইন বা ইউজার-ডিফাইনড ফাংশন বা যেকোনো ক্লাসের মেথড।

is_callable() ফাংশন দিয়ে যাচাই করা যায় কোনো আইডেন্টিফায়ার কলেবল কিনা। PHP-তে call_user_function() রয়েছে যা একটি ফাংশনের নাম প্যারামিটার হিসেবে নেয়।

নিচের উদাহরণে একটি বিল্ট-ইন ফাংশন কলেবল কিনা চেক করা হয়েছে—

উদাহরণ

<?php var_dump (is_callable("abs")); ?>

আউটপুট

এটি নিচের ফলাফল দেবে—

bool(true)

নিচের উদাহরণে একটি ইউজার-ডিফাইনড ফাংশন কলেবল কিনা টেস্ট করা হয়েছে—

উদাহরণ

<?php
function myfunction(){
    echo "Hello World";
}
echo is_callable("myfunction") . "\n";
call_user_func("myfunction")
?>

আউটপুট

এটি নিচের ফলাফল দেবে—

1 Hello World

এক অবজেক্ট মেথড কলেবল হিসেবে পাস করতে অবজেক্ট এবং তার মেথড দুটো একটি অ্যারেতে দুই এলিমেন্ট হিসেবে পাস করতে হয়—

উদাহরণ

<?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

এক ক্লাসের স্ট্যাটিক মেথডও কলেবল হিসেবে পাস করা যায়। অবজেক্টের বদলে ক্লাসের নাম অ্যারে প্যারামিটারের প্রথম এলিমেন্ট হবে—

উদাহরণ

<?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

  1. PHP max() ফাংশন

  2. PHP log10() ফাংশন

  3. PHP log() ফাংশন

  4. PHP lcg_value() ফাংশন