فراخوانی پویا با استفاده از تابع 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


مثال دوم:
در این مثال  تابع call_func_array تابع عضو یک کلاس که در یک فضای نام تعریف شده است را فراخوانی می‌کند

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

در این مثالها ما فرض کرده‌ایم که ورژن پی اچ پی شما ۵٫۶ به بالاست در صورت بروز مشکل در نظرات اعلام فرمایید.
ترجمه شده از سایت:php.net
شاید ترجیح دهید مطالب زیر را بخوانید

دیدگاه خود را بنویسید