특정 클래스 파일을 가져오고 클래스 파일을 호출하려는 경우 call_user_func_array 함수를 사용하세요. 다음은 다양한 매개변수에 따른 두 가지 예입니다.
<?php $func = function($arg1, $arg2) { return $arg1 * $arg2; }; var_dump(call_user_func_array($func, array(2, 4))); /* As of PHP 5.0 */ ?>
는 다음을 출력합니다. >
int(8) [1]<? Class ClassA { function bc($b, $c) { $bc = $b + $c; echo $bc; } } call_user_func_array(array('ClassA','bc'), array("111", "222")); //显示 333 ?>
첫 번째 매개변수: 클래스 이름, 함수. 두 번째 함수: 매개변수 전달
어떤 상황에서 call_user_func_array 함수가 사용되나요? 특정 함수를 호출할 때 new로 직접 호출하면 되지 않나요?
call_user_func_array와 새 클래스 이름의 차이점은 all_user_func_array의 첫 번째 매개변수가 array('클래스 이름', '메소드 이름')인 경우 시스템이 자동으로 클래스에 대한 객체를 생성하여 클래스에 직접 액세스할 수 있다는 것입니다. 그러나 __construct 생성자 메서드는 실행되지 않습니다. 이는 정적 메서드 클래스 이름::함수 이름(매개 변수) 호출을 호출하는 것과 동일하며, 새 클래스 이름이 사용되면 생성자가 먼저 실행됩니다.