인스턴스가 인스턴스화 된 클래스에 상수가 정의되어 있는지 어떻게 알 수 있습니까?상수가 다른 클래스에서 정의되었는지 어떻게 확인합니까?
나는이 :
Class foo {
const BAR = 'baz';
}
이후 $foo
가 다른 클래스의 함수로 전달지고 나는 그것이 설정되어 있는지 확인하고 그 값 (또는 기본값)를 사용하여 상기
Class abc {
public function xyz($foo)
{
if (defined($foo::BAR)) {
$var = $foo::BAR;
} else {
$var = 'default';
}
}
}
을
하지만 내가 무엇을 하든지 상수가 정의되어 있는지 파악할 수는 없습니다. else
에 도달하기 전에 정의되거나 작동하거나 정의되지 않고 FatalError: Undefined class constant 'BAR'
을 던집니다. 그것이 내가 Laravel 5.4와 PHP 5.6에서 일하고 있어요, 전혀 도움이된다면
$foo::BAR | string 'baz' (length=3)
$foo->BAR | null
$foo::BAR !== null | boolean true (when set) Error (when unset)
defined($foo::BAR) | boolean false
defined('$foo::BAR') | boolean false
defined("$foo::BAR") | boolean false
defined('BAR', $foo) | Error
:
이
다양한 I가 한 덤프 (내가 기억 할 수있는)과 그 결과입니다.
클래스 일정 가시성이 근무 PHP 7.1 이상 – amflare