Nice programing

변수가 함수인지 확인하는 php is_function ()

nicepro 2020. 10. 4. 13:25
반응형

변수가 함수인지 확인하는 php is_function ()


나는 create_function으로 할 수있는 것보다 더 쉽게 함수 인 변수를 선언 할 수있는 php의 익명 함수대해 읽게되어 매우 기뻤습니다 . 이제 변수가 전달 된 함수가 있는지 궁금합니다. 함수인지 확인하기 위해 어떻게 확인할 수 있습니까? 아직 is_function () 함수가 없으며 함수 인 변수의 var_dump를 수행 할 때 ::

$func = function(){
    echo 'asdf';
};
var_dump($func);

나는 이것을 얻는다 :

object(Closure)#8 (0) { } 

이것이 기능인지 확인하는 방법에 대한 생각이 있습니까?


is_callable주어진 변수가 함수인지 확인하는 데 사용 합니다. 예를 들면 :

$func = function()
{  
    echo 'asdf';  
};

if( is_callable( $func ) )
{
    // Will be true.
}

function_exists주어진 이름을 가진 함수가 있는지 확인 하는 사용할 수 있습니다 . 익명 함수와 결합하려면 다음을 시도하십시오.

function is_function($f) {
    return (is_string($f) && function_exists($f)) || (is_object($f) && ($f instanceof Closure));
}

변수가 호출 가능한 문자열이나 배열이 아닌 익명 함수인지 확인하려면 instanceof.

$func = function()
{  
    echo 'asdf';  
};

if($func instanceof Closure)
{
    // Will be true.
}

익명 함수 (PHP 5.3에 추가 된 종류)는 항상 Closure클래스의 인스턴스이며 클래스의 모든 인스턴스 Closure는 익명 함수입니다.

PHP에는 틀림없이 함수로 간주 될 수있는 또 다른 유형이 있습니다 __invoke. 바로 매직 메서드 를 구현하는 객체입니다 . 그것들을 포함하고 싶다면 (여전히 문자열과 배열을 제외하고) method_exists($func, '__invoke'). 클로저 __invoke는 일관성을 위해 구현되기 때문에 여전히 클로저를 포함 합니다.


function is_function($f) {
    return is_callable($f) && !is_string($f);
}

참고 URL : https://stackoverflow.com/questions/2835627/php-is-function-to-determine-if-a-variable-is-a-function

반응형