Извините, что отправляю как ответ, но у меня еще нет прав комментирования.
Ответ Шиплу не совсем правильный.Строка:
defined(FIX_RECIPE_ID) && (FIX_RECIPE_ID != $favouriteRecipeId)
будет работать, но выкинет уведомление по линии Use of undefined constant FIX_RECIPE_ID - assumed 'FIX_RECIPE_ID'
, если оно не определено, и будет иметь очень неожиданное поведение (обычно возвращает false), если это так.
Функция defined
принимает имя константы в виде строки.PHP будет предполагать, что вы имеете в виду строку 'FIX_RECIPE_ID'
, если она не определена и работает должным образом (хотя, как уже упоминалось, выдает уведомление).Если оно определено, вы будете проверять, существует ли константа, названная в честь значения FIX_RECIPE_ID.
То есть, если она не определена, ваша проверка эффективна:
defined('FIX_RECIPE_ID') && (FIX_RECIPE_ID != $favouriteRecipeId)
Что правильно и вернет false.Однако, когда определено (давайте представим, что оно 10
), проверка станет:
defined(10) && (FIX_RECIPE_ID != $favouriteRecipeId)
И определено вернет false. Все это условное выражение всегда будет возвращать false.
Правильный способ использования определен в этом контексте:
defined('FIX_RECIPE_ID') && (FIX_RECIPE_ID != $favouriteRecipeId)