PHP で call_user_func_array 関数と call_user_func 関数を使用する方法。また、func_get_args() 関数と func_num_args() 関数の使用方法についても説明します。
call_user_func 関数は、関数を動的に呼び出す必要がある場合に使用されます。この関数には次の 2 つの用途があります。
(1) 孤独な関数を呼び出します。
<p><?php</p>function funa($b,$c){<br /> echo $b;<br /> echo $c;<br />}<br />call_user_func('funa',"111","222");<br />call_user_func('funa',"333","444");<br />//结果输出:111 222 333 444<br />//大家有没有发现,这个用法有点像javascript中的call方法<br /><p>?></p>
(2) クラス内で関数を呼び出します:
<p><?php</p>class a{<br /> function b(){<br /> $args=func_get_args();<br /> $num=func_num_args();<br /> print_r($args);<br /> echo $num;<br /> }<br />}<br />call_user_func(array("a","b"),"111","222");<br /><p>?></p>
上記の例では、結果の出力は次のようになります。次のように:
配列
(2
ヒント: func_get_args() 関数は、関数に渡されたパラメータを取得し、配列を返します。
call_user_func_array を見てみましょう。この関数は、パラメータが配列で渡されることを除いて、関数を動的に呼び出す必要がある場合にも使用されます。
<p><?php</p>function a($b,$c){<br /> echo $b;echo $c;<br />}<br />call_user_func_array('a',array("111","222"));<br />//结果输出:111 222<br /><p>?></p>
call_user_func_array 関数は、次のようなクラス内のメソッドを呼び出すこともできます。
<p><?php</p>Class ClassA{<br /> function bc($b,$c){<br /> $bc=$b + $c;echo $bc;<br /> }<br />}<br />call_user_func_array(array('ClassA','bc'),array("111","222"));<br />//结果输出:333<br /><p>?></p>
以下 関数を動的に呼び出す別の例を見てみましょう:
<p><?php</p>function otest1 ($a){<br /> echo( '一个参数' );<br />}<br />function otest2 ( $a,$b){<br /> echo( '二个参数' );<br />}<br />function otest3 ( $a ,$b,$c){<br /> echo( '三个啦' );<br />}<br />function otest (){<br /> $args=func_get_args();<br /> $num=func_num_args();<br /> call_user_func_array( 'otest'.$num,$args );<br />}<br />otest("11");<br />otest("11","22");<br />otest("11","22","33");<br /><p>?></p>
読者は上記の例を自分で実行でき、その印象はより深くなるでしょう。