PHP의 call_user_func() 및 call_user_func_array() 함수에 대한 간략한 토론

little bottle
풀어 주다: 2023-04-05 22:26:01
앞으로
4097명이 탐색했습니다.
이 글에서는 주로 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)
로그인 후 복사

Call을 통해 가져옵니다. 클래스 메소드:

클래스에는 정적 메소드를 호출하는 두 가지 형태가 있으며, 공개 메소드를 호출하는 첫 번째 매개변수는 배열만 될 수 있습니다

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);  
로그인 후 복사

마지막으로:
and 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의 두 번째 매개변수는 배열만 될 수 있습니다.

관련 튜토리얼:

PHP 비디오 튜토리얼

위 내용은 PHP의 call_user_func() 및 call_user_func_array() 함수에 대한 간략한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿