Следующий код работает, как и ожидалось, в PHP 7.0 и новее:
class foo {
const BLAH = [];
public function bar() {
return isset(static::BLAH['baz']);
}
}
var_dump((new foo)->bar());
В то время как PHP 5.6 просто дает:
Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
Изменение кода в соответствии с предложениемприводит к уведомлению (которое ожидается):
Notice: Undefined index: baz
Это будет работать:
class foo {
const BLAH = [];
public function bar() {
return null !== static::BLAH['baz'];
}
}
var_dump(@(new foo)->bar());
Есть ли альтернатива, которая не заканчивается уведомлениембез префикса вызова с @
?