다음과 비슷한 코드를 사용하는 몇 개의 라이브러리가 있습니다.call_user_func_array()에 대한 다음 호출이 작동합니까?
$args = array_merge(array(&$target, $context), $args);
$result = call_user_func_array($callback, $args);
코드는 두 경우에 다른,하지만 난의 코드가 이루어집니다 본질적 것입니다. $callback
기능은 다음 서명을 사용
function callback(&$target, $context);
이 두 라이브러리는 해당 문서 및 타사 코드를 (이 플러그인을 호출, 또는 확장)를 확장 아무도 콜백을 정의하지 않는다 즉, 함수 서명을 채택 예 : function my_extension_loader_callback($target, $context)
.
나를 혼란스럽게하는 내용은 call_user_func_array()에 대한 다음 문장입니다.
PHP 5.4 이전에는 param_arr의 참조 변수가 함수가 참조로 전달할 매개 변수를 필요로하는지 여부에 관계없이 참조로 함수에 전달됩니다. 이 형식의 호출 시간 통과 참조는 비추천 통지를 내리지 않지만, 그럼에도 불구하고 비공개이며 PHP 5.4에서 제거되었습니다. 또한 함수 서명이 적용되는 내부 함수에는 적용되지 않습니다. 함수가 참조로 매개 변수를 예상 할 때 값을 전달하면 경고가 발생하고
call_user_func()
은FALSE
이됩니다.
특히 강조 표시된 문장은 PHP 코드에서 정의 된 함수에 대해서는 강조 표시하지 않는 것이 좋습니다.
이렇게하면 call_user_func_array()
을 PHP 5.4에서 사용할 수 있습니까?
'call_user_func_array()'는 호출 된 함수가 반환하는 값을 반환합니다. 호출 된 함수가 올바른 반환 값으로'false'를 반환하면 오류 반환을 위해이 반환 값을 사용하는 것은 좋지 않습니다. –