नामस्थान का उपयोग करते समय, call_user_func () एक फ़ंक्शन को चलाने का एकमात्र तरीका है जिसे आप पहले से नाम नहीं जानते हैं, उदाहरण के लिए:
$function = '\Utilities\SearchTools::getCurrency';
call_user_func($function,'USA');
यदि आपके सभी कार्य समान नामस्थान में थे, तो यह ऐसा मुद्दा नहीं होगा, जैसा कि आप कुछ इस तरह से उपयोग कर सकते हैं:
$function = 'getCurrency';
$function('USA');
संपादित करें: @Jannis के बाद यह कहना कि मैं गलत हूं मैंने थोड़ा और परीक्षण किया, और बहुत ज्यादा किस्मत नहीं थी:
<?php
namespace Foo {
class Bar {
public static function getBar() {
return 'Bar';
}
}
echo "<h1>Bar: ".\Foo\Bar::getBar()."</h1>";
// outputs 'Bar: Bar'
$function = '\Foo\Bar::getBar';
echo "<h1>Bar: ".$function()."</h1>";
// outputs 'Fatal error: Call to undefined function \Foo\Bar::getBar()'
$function = '\Foo\Bar\getBar';
echo "<h1>Bar: ".$function()."</h1>";
// outputs 'Fatal error: Call to undefined function \foo\Bar\getBar()'
}
आप यहां आउटपुट परिणाम देख सकते हैं: https://3v4l.org/iBERh ऐसा लगता है कि PHP 7 के लिए दूसरी विधि काम करती है, लेकिन PHP 5.6 नहीं।