변수처리 is_callable

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

is_callable — 현재 범위에서 값을 함수로 호출할 수 있는지 확인합니다.


설명

is_callable(mixed $value, bool $syntax_only = false, string &$callable_name = null): bool

값이 호출 가능한지 확인하십시오.


매개변수

value
확인할 값
syntax_only
true로 설정하면 함수는 해당 value이 함수 또는 메서드인지만 확인합니다. 문자열이 아닌 단순 변수 또는 콜백으로 사용할 유효한 구조가 없는 배열만 거부합니다. 유효한 항목에는 2개의 항목만 있어야 합니다. 첫 번째 항목은 개체 또는 문자열이고 두 번째 항목은 문자열입니다.
callable_name
"호출 가능한 이름"을 받습니다. 아래 예에서는 "someClass::someMethod"입니다. 그러나 someClass::SomeMethod()가 호출 가능한 정적 메서드라는 암시에도 불구하고 이것은 사실이 아닙니다.

반환 값

value이 호출 가능한 경우 true를 반환하고 그렇지 않으면 false를 반환합니다.


Examples

예제 #1 is_callable() 예제

                  
<?php
//  How to check a variable to see if it can be called
//  as a function.

//
//  Simple variable containing a function
//

function someFunction()
{
}

$functionVariable = 'someFunction';

var_dump(is_callable($functionVariable, false, $callable_name));  // bool(true)

echo $callable_name, "\n";  // someFunction

//
//  Array containing a method
//

class someClass {

  function someMethod()
  {
  }

}

$anObject = new someClass();

$methodVariable = array($anObject, 'someMethod');

var_dump(is_callable($methodVariable, true, $callable_name));  //  bool(true)

echo $callable_name, "\n";  //  someClass::someMethod
?>
                  
                

예제 #2 is_callable() 및 생성자

is_callable()은 생성자를 호출할 수 없는 것으로 보고합니다.

                  
<?php

class Foo
{
    public function __construct() {}
    public function foo() {}
}

var_dump(
    is_callable(array('Foo', '__construct')),
    is_callable(array('Foo', 'foo'))
);
                  
                

위의 예는 다음을 출력합니다.

bool(false)
bool(false)
                

메모

  • 객체는 __invoke()를 구현하고 해당 메서드가 현재 범위에서 표시되는 경우 항상 호출 가능합니다.
  • 클래스 이름은 __callStatic()을 구현하는 경우 호출 가능합니다.
  • 객체가 __call()을 구현하면 이 함수는 메서드가 정의되지 않은 경우에도 해당 객체의 모든 메서드에 대해 true를 반환합니다.
  • 이 함수는 클래스 이름으로 호출되는 경우 자동 로드를 트리거할 수 있습니다.

기타