이 글에서는 주로 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)
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.' 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);
마지막으로:
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의 call_user_func() 및 call_user_func_array() 함수에 대한 간략한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!