UCenter에 찾아보니 함수 call_user_func가 있는데 제가 직접 정의한 함수인줄 알고 헷갈렸는데 나중에 바이두에서 검색해보니 call_user_func라는 게 있더군요. 내장 함수
call_user_func 함수를 호출하는 특수 메소드와 유사합니다. 사용법은 다음과 같습니다.
1 2 3 4 5 6 7 8 | function a( $b , $c )
{
echo $b ;
echo $c ;
}
call_user_func('a', "111" , "222" );
call_user_func('a', "333" , "444" );
|
로그인 후 복사
클래스 내부에서 메소드를 호출하는 것이 실제로는 배열을 사용합니다. 물론 개발자가 어떻게 생각했는지는 모르겠습니다. 새로운 점:
1 2 3 4 5 6 7 8 | class a {
function b( $c )
{
echo $c ;
}
}
call_user_func( array ( "a" , "b" ), "111" );
|
로그인 후 복사
call_user_func_array 함수는 구조를 만들기 위해 매개변수가 다른 방식으로 전달된다는 점만 제외하면 call_user_func와 매우 유사합니다. 더 명확한 매개변수:
1 2 3 4 5 6 7 | function a( $b , $c )
{
echo $b ;
echo $c ;
}
call_user_func_array('a', array ( "111" , "222" ));
|
로그인 후 복사
call_user_func_array 함수는 클래스 내부의 메서드도 호출할 수 있습니다.
1 2 3 4 5 6 7 8 9 | Class ClassA
{
function bc( $b , $c ) {
$bc = $b + $c ;
echo $bc ;
}
}
call_user_func_array( array ('ClassA','bc'), array ( "111" , "222" ));
|
로그인 후 복사
call_user_func 함수와 call_user_func_array 함수 모두 references를 지원하므로 일반 함수 호출과 기능적으로 더 일관성이 있습니다.
1 2 3 4 5 6 7 8 9 | function a(& $b )
{
$b ++;
}
$c = 0;
call_user_func('a', & $c );
echo $c ;
call_user_func_array('a', array (& $c ));
echo $c ;
|
로그인 후 복사
간단한 사용법 of call_user_func_array in php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php
function foobar( $arg , $arg2 ) {
echo FUNCTION, " got $arg and $arg2\n" ;
}
class foo {
function bar( $arg , $arg2 ) {
echo METHOD, " got $arg and $arg2\n" ;
}
}
call_user_func_array( "foobar" , array ( "one" , "two" ));
$foo = new foo;
call_user_func_array( array ( $foo , "bar" ), array ( "three" , "four" ));
?>
|
로그인 후 복사
위 루틴의 출력은 다음과 유사합니다.
foobar는 1과 2를 얻었습니다.
foo::bar는 3과 4를 얻었습니다.
예제 #2 네임스페이스 이름을 사용하는 call_user_func_array()
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php
namespace Foobar;
class Foo {
static
public function test( $name ) {
print "Hello {$name}!\n" ;
}
}
call_user_func_array(NAMESPACE .'\Foo::test', array ('Hannes'));
call_user_func_array( array (NAMESPACE .'\Foo', 'test'), array ('Philip'));
?>
|
로그인 후 복사
의 출력 위의 루틴은 다음과 유사합니다:
Hello Hannes!
예제 #3 위의 람다 함수 사용
1 2 3 4 5 6 | <?php
$func = function ( $arg1 , $arg2 ) {
return $arg1 * $arg2 ;
};
var_dump(call_user_func_array( $func , array (2, 4)));
?>
|
로그인 후 복사
루틴은 다음을 출력합니다:
int(8)
위 내용은 PHP 함수 call_user_func 및 call_user_func_array의 사용 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!