Может кто-нибудь объяснить, как это определение работает:
define( 'A_DEFINE', B_VALUE ? 'yes' : 'no' );
Кажется, там есть троичная операторная структура, но не совсем понятно, как все это объединить.
В PHP неопределенные константы оцениваются как true. От PHP ручная документация:
Если вы используете неопределенную константу, PHP предполагает, что вы имеете в виду имя самой константы, как если бы вы называли ее как строку (
CONSTANT
против"CONSTANT"
). Ошибка уровняE_NOTICE
будет выдан, когда это произойдет.
У тебя есть:
define( 'A_DEFINE', B_VALUE ? 'yes' : 'no' );
Итак, в приведенном выше заявлении, это то, что происходит. Если B_VALUE
оценивается как true (что происходит, потому что он не инициализирован), установите значение A_CONSTANT
в yes
иначе установите его на no
,
define('A_DEFINE', B_VALUE ? 'yes' : 'no' );
var_dump(B_VALUE, A_DEFINE); // Just checking what the outputs are
Вышеуказанные выводы:
string(7) "B_VALUE"string(3) "yes"
Предполагая, что B_VALUE имеет логическое значение, это будет означать, что если B_VALUE равно true
тогда A_DEFINE становится «да», иначе становится «нет».
Например
$a = $b ? "yes" : "no";
Такой же как
if ($b == true) {
$a = "yes";
} else {
$a = "no";
}
Ternary — это просто более читаемый и очень быстрый способ сделать это.
Надеюсь это поможет!