PHP関数call_user_funcとcall_user_func_arrayの詳しい説明

WBOY
リリース: 2016-06-13 13:14:02
オリジナル
829 人が閲覧しました

PHP関数call_user_funcとcall_user_func_array
の詳しい説明

call_user_func 関数は、関数を呼び出す特別なメソッドに似ています。使用方法は次のとおりです。?
function a($b,$c)?
{
echo $b;
echo $ c;
}
call_user_func('a', "111","222");
call_user_func('a', "333","444");
//111 222 333 444
?>

を表示します

クラス内でメソッドを呼び出すのは奇妙です。実際には配列を使用しています。もちろん、new が省略されているのも斬新です。 {
function b( $c)?
{
echo $c;
}
}
call_user_func(array("a", "b"),"111") ;
//表示 111
?>

call_user_func_array 関数は call_user_func とよく似ていますが、パラメータの構造を明確にするためにパラメータが異なる方法で渡される点が異なります。

function a($b, $c)?
{
エコー $b;
エコー $c;

}

call_user_func_array('a', array("111", "222"));
//表示 111 222
?>

call_user_func_array 関数はクラス内のメソッドを呼び出すこともできます

クラス ClassA

{

関数 bc($b, $c) {

???? $bc = $b + $c;
echo $bc;
}
}
call_user_func_array(array) ('ClassA','bc'), array("111", "222"));

//ディスプレイ 333

?>

call_user_func 関数と call_user_func_array 関数はどちらも参照をサポートしているため、通常の関数呼び出しと機能的に一貫性が高くなります。

function a(&$b)
{
$b++;
}
$c = 0;
call_user_func('a', &$c);
echo $c;//Display 1
call_user_func_array('a', array(&$c)); 🎜>echo $c;//display 2

?

?

php での call_user_func_array の簡単な使用法

今日のグループで、Lewis という人が call_user_func_array の使い方について質問していました。私はそれを使ったことがなかったので何も言えず、マニュアルを見たら次のように書かれていました。

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

で指定されたユーザー定義関数を、? にパラメータを指定して呼び出します。 param_arr.?次に、別の例があります:

?

例を読めば少しは理解できるはずですよね?
これが私がこの関数を理解する方法です。もしそれが間違っていたとしても、すべての専門家がこれを笑わないことを願っています:
???? この関数の実際の使用法は、最初のパラメータが関数のオーバーロードに似ているためです。これは文字型であり、これは関数の名前です。実際、これは次のように使用されます。 PHP の擬似オーバーロード?、おそらく理解できると思いますが、この関数の存在のおかげで、関数のオーバーロードを次のように使用することもできることがわかりました。

function otest1 ($a)
 {
    echo( '一个参数' );
}

function otest2 ( $a, $b)
{
     echo( '二个参数' );
  }

  function otest3 ( $a ,$b,$c)
  {
      echo( '三个啦' );
  }

 function otest ()
  {
     $args = func_get_args();
     $num = func_num_args();
      call_user_func_array( 'otest'.$num, $args   );
   }

  otest(1,2);
ログイン後にコピー
?

?

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!