【发布时间】:2016-01-17 21:03:12
【问题描述】:
如何检查像 A\B::X['Y']['Z'] 这样的常量元素是否已设置?
<?php
namespace A;
class B
{
const X = [
'Y' => [
'Z' => 'value'
]
];
}
var_dump(defined('\A\B::X') && isset(\A\B::X['Y']['Z']));
Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in [...] on line 13
【问题讨论】:
-
@Rizier123 defined(A\B::X) 返回 true,但 defined(A\B::X['Y']['Z']) 返回 false :(
-
@Federico isset() 触发致命错误。
-
你想检查常量是否存在以及它是否有一个元素集?
-
defined('A\B::X') && isset(A\B::X['Y']['Z'])