定数がインスタンス化されたクラスで定義されているかどうかを確認する方法はありますか?定数が別のクラスから定義されているかどうかを確認するにはどうすればよいですか?
私が持っている:私はそれが設定されているかどうかを確認し、その値(またはデフォルト値)を使用することを特徴とする請求
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'
をスローします。
これらは、様々な私は(私が思い出すことができることを)やったダンプとその結果、次のとおりです。
$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
それは私がLaravel 5.4とPHP 5.6で働いている、まったく助けている場合。
クラス定数視認性がこれは働いていたPHP 7.1以降 – amflare