নেমস্পেসগুলি ব্যবহার করার সময়, কল_ইউজার_ফঙ্ক () এমন কোনও ফাংশনটি চালানোর একমাত্র উপায় যা আপনি আগে নামটি জানেন না, উদাহরণস্বরূপ:
$function = '\Utilities\SearchTools::getCurrency';
call_user_func($function,'USA');
যদি আপনার সমস্ত ক্রিয়াকলাপ একই নাম স্থানে থাকে তবে এটি কোনও সমস্যা হবে না, কারণ আপনি এই জাতীয় কিছু ব্যবহার করতে পারেন:
$function = 'getCurrency';
$function('USA');
সম্পাদনা: @ জান্নিসকে অনুসরণ করে যে আমি ভুল করে বলছি যে আমি আরও কিছু পরীক্ষা করেছি, এবং খুব বেশি ভাগ্যও পাচ্ছিলাম না:
<?php
namespace Foo {
class Bar {
public static function getBar() {
return 'Bar';
}
}
echo "<h1>Bar: ".\Foo\Bar::getBar()."</h1>";
$function = '\Foo\Bar::getBar';
echo "<h1>Bar: ".$function()."</h1>";
$function = '\Foo\Bar\getBar';
echo "<h1>Bar: ".$function()."</h1>";
}
আপনি আউটপুট ফলাফলগুলি এখানে দেখতে পাবেন: https://3v4l.org/iBERh মনে হয় দ্বিতীয় পদ্ধতিটি পিএইচপি 7 এর জন্য কাজ করে তবে পিএইচপি 5.6 নয়।
call_user_func
অগত্যা প্রয়োজন হয় না। আপনি সর্বদা পরিবর্তনশীল ফাংশন ব্যবহার করে একটি ফাংশন কল করতে পারেন:$some_func()
।call_user_func_array
সত্যিই দরকারী যে এক।