関数処理 関数
PHP Manual

call_user_func_array

(PHP 4 >= 4.0.4, PHP 5)

call_user_func_arrayパラメータの配列を指定してユーザ関数をコールする

説明

mixed call_user_func_array ( callback $function , array $param_arr )

param_arr にパラメータを指定して、 function で指定したユーザ定義関数をコールします。

パラメータ

function

コールする関数。

param_arr

関数に渡すパラメータを指定する配列。

返り値

関数の結果、あるいはエラー時に FALSE を返します。

例1 call_user_func_array() の例

<?php
function debug($var$val)
{
    echo 
"***DEBUGGING\nVARIABLE: $var\nVALUE:";
    if (
is_array($val) || is_object($val) || is_resource($val)) {
        
print_r($val);
    } else {
        echo 
"\n$val\n";
    }
    echo 
"***\n";
}

$c mysql_connect();
$host $_SERVER["SERVER_NAME"];

call_user_func_array('debug', array("host"$host));
call_user_func_array('debug', array("c"$c));
call_user_func_array('debug', array("_POST"$_POST));
?>

例2 call_user_func_array() での名前空間の使用法

<?php

namespace Foobar;

class 
Foo {
    static public function 
test($name) {
        print 
"Hello {$name}!\n";
    }
}

// PHP 5.3.0 以降
call_user_func_array(__NAMESPACE__ .'::Foo::test', array('Hannes'));
// Hello Hannes!

// PHP 5.3.0 以降
call_user_func_array(array(__NAMESPACE__ .'::Foo''test'), array('Philip'));
// Hello Philip!

?>

例3 ラムダ関数の使用

<?php

$func 
= function($arg1$arg2) {
    return 
$arg1 $arg2;
};

var_dump(call_user_func_array($func, array(24))); /* PHP 5.3.0 以降 */
// int(8)

?>

注意

注意: param_arr 内で参照される変数は、 関数に参照渡しされます。それ以外は値渡しとなります。 つまり、パラメータが値渡しとなるか参照渡しとなるのかは、 関数のシグネチャには依存しないということです。

参考


関数処理 関数
PHP Manual
アダルトレンタルサーバー