ホームページ > バックエンド開発 > PHPチュートリアル > PHP の call_user_func() 関数と call_user_func_array() 関数に関する簡単な説明

PHP の call_user_func() 関数と call_user_func_array() 関数に関する簡単な説明

little bottle
リリース: 2023-04-05 22:26:01
転載
4150 人が閲覧しました
この記事では主に、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++.&#39;<br/>&#39;;
    echo $call++.&#39;<br/>&#39;;
    return $call;
}
$rs = call_user_func(&#39;_call&#39;,1);
var_dump($rs);

//结果
//1
//2
//int(3)
ログイン後にコピー

最初に実行し、次に参照します。

$arg = 1;
call_user_func(function ($call){
    echo ++$call.&#39;<br/>&#39;;
    echo ++$call.&#39;<br/>&#39;;
},$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 &#39;<br/>&#39;;
    //获取所有的参数,并以数组的形式返回
    $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.&#39; and argument is &#39;.$arg;
        }else{
            return $str;
        }
    }


    public function _Two($num){
        return $num ? $num + 1 : $num;
    }

}

echo "<br/>";
//调用类的静态方法
var_dump(call_user_func(&#39;Func::_One&#39;,&#39;one&#39;));
echo &#39;<br/>&#39;;
var_dump(call_user_func([&#39;Func&#39;,&#39;_One&#39;]));

$num = 4;
$o = new Func;
//调用类普通方法
$return = call_user_func(array($o,&#39;_Two&#39;),$num);
echo &#39;<br/>&#39;;
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__.&#39;\StaticDemo&#39;,&#39;_One&#39;),100);
call_user_func(&#39;App\StaticDemo::_One&#39;,200);
//调用public方法
call_user_func(array($obj,&#39;_Two&#39;),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 サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート