tmman
@tmman
Обои из семерки наконец-то пригодились!

Где найти описание такого логического выражения?

Потрошу по гайдам Yii2. Во входном скрипте написано:

defined('YII_DEBUG') or define('YII_DEBUG', true);

Можно догадаться, что это равносильно вот такому:
if (!defined('YII_DEBUG'))
{
    define('YII_DEBUG', true);
}


Но! Что-то я не могу найти ОФИЦИАЛЬНОЕ описание на php.net таких конструкций. Можно ли считать это плохим тоном, потому что запутывает? Как, например, тогда интерпретировать foo() and bar()? xor?
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 1
artem90
@artem90
php-программист
Это все относится к логическим операторам:
php.net/manual/ru/language.operators.logical.php

В случае ИЛИ сначала выполняется первое выражение и только если оно false выполняется второе (какой смысл для ИЛИ выполнять второе выражение если первое уже true?)

для И будет аналогичное foo() && bar()

bar() выполнится только если foo() === true

Касаемо читаемости:
1 - все зависит от контекста. Если автору не совсем очевидно, что это легко читается - значит это читается плохо
2 - у Yii очень своеобразный code style и не стоит брать с них пример)
3 - [доп] проверять установлена ли константа или нет - это совсем плохо.. Константа на то и константа чтоб быть постоянной. Если она то есть, то нет - значит это переменная, причем плохая =D
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы