この記事では主に、PHP の call_user_func() 関数と call_user_func_array() 関数の機能と使い方について簡単に説明しますので、興味のある方はぜひ学んでください。
call_user_func: パラメータをコールバック関数として呼び出す
使用方法:
call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] ) : mixed
パラメータの説明:
最初のパラメータ $callbackはコールバック関数として機能し、他のパラメータはコールバック関数のパラメータです。
$parameter: コールバック $callback 関数に渡されるパラメータ。ここでのパラメータは参照渡しできないことに注意してください。
次の簡単な例は、さまざまな状況での call_user_func の使用法を示しています。
//先引用,后执行 function _call($call){ echo $call++.'<br/>'; echo $call++.'<br/>'; return $call; } $rs = call_user_func('_call',1); var_dump($rs); //结果 //1 //2 //int(3)
最初に実行し、次に参照します。
$arg = 1; call_user_func(function ($call){ echo ++$call.'<br/>'; echo ++$call.'<br/>'; },$arg); //结果为2,3
コールバック関数は値を渡しません。 func_get_arg を渡し、 func_get_args はパラメータを取得します
$argOne = 1; $argTwo = 2; call_user_func(function (){ //获取第几个参数 $arg = func_get_arg(0); var_dump($arg); echo '<br/>'; //获取所有的参数,并以数组的形式返回 $args = func_get_args(); var_dump($args); //获取参数个数 $argNum = func_num_args(); echo "<br/>"; var_dump($argNum); },$argOne,$argTwo); //结果为 int(1) array(2) { [0]=> int(1) [1]=> int(2) } int(2)
クラス メソッドの呼び出し:
クラス内で静的メソッドを呼び出すには 2 つの形式があり、パブリック メソッドを呼び出す最初のパラメータは次のとおりです。メソッドは配列のみにすることができます
class Func{ static public function _One(){ $str = "THE CLASS NAME IS".__CLASS__." AND CLASS STATIC METHOD IS ".__METHOD__; $argNum = func_num_args(); if($argNum){ $arg = func_get_arg(0); return $str.' and argument is '.$arg; }else{ return $str; } } public function _Two($num){ return $num ? $num + 1 : $num; } } echo "<br/>"; //调用类的静态方法 var_dump(call_user_func('Func::_One','one')); echo '<br/>'; var_dump(call_user_func(['Func','_One'])); $num = 4; $o = new Func; //调用类普通方法 $return = call_user_func(array($o,'_Two'),$num); echo '<br/>'; var_dump($return); 结果: string(79) "THE CLASS NAME ISFunc AND CLASS STATIC METHOD IS Func::_One and argument is one" string(59) "THE CLASS NAME ISFunc AND CLASS STATIC METHOD IS Func::_One" int(5)
名前空間を使用してクラスを呼び出す場合、call_user_func の使用法は上記と同じです
//调用静态方法 call_user_func(array(__NAMESPACE__.'\StaticDemo','_One'),100); call_user_func('App\StaticDemo::_One',200); //调用public方法 call_user_func(array($obj,'_Two'),2,3,4);
最後に:
call_user_func 関数と同様、call_user_func_array があります。call_user_func_array の関数は call_user_func と同じです。関数は同じです。
違いは、call_user_func はコールバック関数を使用して文字を処理するのに対し、call_user_func_array はコールバック関数を使用して配列を処理することです。 call_user_func_array の 2 番目のパラメータは配列のみです。
関連チュートリアル: PHP ビデオ チュートリアル
以上がPHP の call_user_func() 関数と call_user_func_array() 関数に関する簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。