변수처리 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
를 반환합니다. - 이 함수는 클래스 이름으로 호출되는 경우 자동 로드를 트리거할 수 있습니다.
기타
- function_exists() - 주어진 함수가 정의되면 true를 반환합니다.
- method_exists() - 클래스 메소드가 존재하는지 확인