فراخوانی پویا با استفاده از تابع call_user_func_array در php
شکل کلی فراخوانی این تابع به صورت زیر میباشد
mixed call_user_function (callable $callback[,mixed $parameter[,mixed $...]])
که اولین پارامتر یک تابع است که این تابع میتواند عضوی از یک فضای نام،دریک کلاس یا به صورت ساده در یک فایل تعریف شود.دومین پارامتر نیز آرایهای از پارامترهای تابع مورد نظر میباشد.
خروجی این تابع یا false و یا مقدار برگشت داده شده از تابع مورد نظر میباشد
مثال یک:
در این مثال تابع call_func_array ابتدا یک تابع را فراخوانی میکند سپس همین تابع یک تابع عضو کلاس را فراخوانی میکند.توجه کنید که برای فراخوانی تابع عضو کلاس ، کلاس مورد نظر باید ایجاد گردد.
<?php
function foobar($arg,$arg2){ echo __FUNCTION__,”got $arg and $arg2\n”; }
class foo{
function bar($arg,$arg2) {
echo __METHOD__,”got $arg and $arg2\n”; }
}
call_user_func_array(“foobar”,array(“one”,”tow”));//فراخوانی تابع foobar
call_user_func_array(array($foo,”bar”),array(“three”,”four”); ?>
خروجی مثال بالا به صورت زیر میباشد:
foobar got one and tow
<?php
namespace Foobar;
class Foo {
static public function test($name) {
print “Hello {$name}!\n”;
}
}
// As of PHP ۵٫۳٫۰
call_user_func_array(__NAMESPACE__ .’\Foo::test’, array(‘Hannes’));
// As of PHP ۵٫۳٫۰
call_user_func_array(array(__NAMESPACE__ .’\Foo’, ‘test’), array(‘Philip’));
?>
Hello Hannes! Hello Philip!
مثال سوم:
در این مثال تابع call_func_array یک تابع بی نام را فراخوانی میکند
<?php
$func = function($arg1, $arg2) {
return $arg1 * $arg2;
};
var_dump(call_user_func_array($func, array(2, ۴))); /* As of PHP ۵٫۳٫۰ */
?>
خروجی این مثال به صورت زیر میباشد:
int(8)
مثال چهارم:
<?php
function mega(&$a){
$a = ۵۵;
echo “function mega \$a=$a\n”;
}
$bar = ۷۷;
call_user_func_array(‘mega’,array(&$bar));
echo “global \$bar=$bar\n”;
?>
function mega $a=55 global $bar=55