개요
PHP에서 정적 메서드(Static Method)를 다른 함수의 인수로 전달하려면 is_callable 및 call_user_func에서 사용되는 것과 동일한 문법을 그대로 활용하면 됩니다. 이는 함수나 메서드를 문자열 형태의 콜백으로 참조하는 PHP의 표준적인 방식으로, 런타임에 동적으로 함수를 호출해야 할 때 매우 유용합니다.
정적 메서드를 인수로 전달하는 기본적인 예제는 아래와 같습니다.
예제
<?php
function my_func() {
echo "Hello there!";
}
$variable_name = "my_func";
var_dump(is_callable($variable_name, false, $callable_name));
echo $callable_name, "\n";
var_dump(is_callable($variable_name));
?>
코드 설명
- my_func(): 간단한 인사말을 출력하는 사용자 정의 함수입니다.
- $variable_name: 호출하고자 하는 함수 이름을 문자열 형태로 담고 있는 변수입니다.
- is_callable(): 첫 번째 매개변수로 전달된 값이 실제로 호출 가능한지 검사합니다. 세 번째 매개변수(
$callable_name)를 함께 넘기면, 확인된 호출 가능한 이름이 해당 변수에 저장됩니다.
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과가 생성됩니다.
bool(true)
my_func
bool(true)
첫 번째 var_dump()는 $variable_name이 호출 가능한 구조인지 검사하여 true를 반환하고, 동시에 세 번째 매개변수로 전달된 $callable_name에 함수 이름인 "my_func"가 저장됩니다. 마지막 var_dump() 역시 해당 값이 유효한 호출 대상임을 확인하여 true를 반환합니다. 이처럼 is_callable을 활용하면 문자열로 전달된 함수나 정적 메서드가 안전하게 호출 가능한지 사전에 검증할 수 있습니다.