Правильность кода

Sunday

Cōgitō ergō sum
Регистрация
13 Дек 2009
Сообщения
816
Реакции
342
Подскажите, как работает условие с восклицательным знаком, которое идёт после второго "или"? Я не могу уловить смысл восклицательного знака здесь
PHP:
if (!file_exists($COOKIE["FILE"]) || (filesize($COOKIE["FILE"]) < 600) || !((filemtime($COOKIE["FILE"])) > time() - 3600*24)) {
...
}
 

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.239
Имя файла берется из $COOKIE["FILE"]. Например, там /etc/passwd

Условие сработает если выполнено одно из условий
1. Файл не существует
2. Размер файла менее 600 байт
3. Файл изменен более, чем 24 часа назад

PS
Восклицательный знак больше походит на костыль, когда не хочешь разбираться в условии. Проще было знак ">" заменить на "<"
 

chameleoz

Создатель
Регистрация
16 Июл 2019
Сообщения
11
Реакции
1
В догонку к вышесказанному, такой курьез возникает часто из-за сложностей уловить местоположение скобок. В итоге не сразу легко уловить к какому блоку относится !. Современные редакторы не только выделяют скобки парами но и предлагают опционально раскрашивать блоки. Часто данный функционал реализован внешними плагинами. Полезно не только новичкам. Уберегает от механических ошибок. Например в семействе продуктов от Jetbrains есть внешний плагин Rainbow Brackets. Попробуйте.
 
Сверху