endif
Ключевое слово endif закрывает блок if в PHP с использованием альтернативного синтаксиса. Узнайте о синтаксисе, примерах и типичных ошибках.
endif
Ключевое слово endif является частью альтернативного синтаксиса управляющих структур в PHP. Вместо того чтобы оборачивать тело оператора if в фигурные скобки ({ ... }), альтернативный синтаксис открывает блок двоеточием (:) и закрывает его с помощью endif;. Этот стиль был добавлен специально для того, чтобы PHP выглядел читаемо при смешивании с HTML в шаблонах.
В этой статье рассматривается синтаксис endif, когда его следует использовать и какие ошибки чаще всего возникают.
Синтаксис
Стандартный блок if использует фигурные скобки; альтернативный синтаксис заменяет открывающую скобку на :, а закрывающую — на endif;:
Синтаксис PHP-оператора endif
// Brace syntax
if ($condition) {
// code to be executed
}
// Alternative syntax — equivalent
if ($condition):
// code to be executed
endif;Важны два правила:
- Строка с условием заканчивается двоеточием (
:), а не открывающей фигурной скобкой. - Блок закрывается с помощью
endif, за которым обязательно должна следовать точка с запятой (;). Пропуск точки с запятой — наиболее распространённая причина синтаксической ошибки.
Тот же шаблон применяется к другим управляющим структурам: endforeach, endfor, endwhile и endswitch.
Примеры
Рассмотрим несколько практических примеров использования ключевого слова endif:
Примеры PHP endif
<?php
// Example 1
$x = 5;
if ($x == 5):
echo "The value of x is 5." . PHP_EOL;
endif;
// Output: The value of x is 5.
// Example 2
$x = 10;
if ($x > 5):
echo "The value of x is greater than 5.";
else:
echo "The value of x is less than or equal to 5.";
endif;
// Output: The value of x is greater than 5.В этих примерах ключевое слово endif используется для обозначения конца оператора if. Альтернативный синтаксис также поддерживает ветки else и elseif в рамках одного блока — все они закрываются одним endif;:
<?php
$score = 82;
if ($score >= 90):
echo "Grade: A";
elseif ($score >= 80):
echo "Grade: B";
elseif ($score >= 70):
echo "Grade: C";
else:
echo "Grade: F";
endif;
// Output: Grade: BОбратите внимание: в альтернативном синтаксисе elseif пишется как одно слово — форма else if (два слова) недопустима в блоке с альтернативным синтаксисом.
Использование endif в HTML-шаблонах
Именно для этого и существует endif. При смешивании PHP и HTML закрывающую } легко потерять из виду, тогда как <?php endif; ?> читается почти как закрывающий тег и чётко указывает, какую структуру он завершает. Сравните два стиля:
<!-- Hard to scan: brace floating in markup -->
<?php if ($loggedIn) { ?>
<p>Welcome back!</p>
<?php } ?>
<!-- Self-documenting: alternative syntax -->
<?php if ($loggedIn): ?>
<p>Welcome back!</p>
<?php endif; ?>Альтернативная форма делает шаблоны более читаемыми, особенно при вложенных блоках — именно поэтому большинство устаревших PHP-шаблонов (и встроенные шаблонизаторы многих фреймворков) опираются на неё.
Типичные ошибки
- Точка с запятой после
endifобязательна.endifбез;вызывает синтаксическую ошибку. - Не смешивайте синтаксисы в одном блоке. Нельзя открыть блок с помощью
{и закрыть его черезendif, или открыть через:и закрыть через}. - Используйте
elseif, а неelse if. Форма из двух слов разрешена только в синтаксисе с фигурными скобками.
Преимущества
Использование ключевого слова endif даёт ряд преимуществ:
- Улучшенная читаемость: Ключевое слово
endifделает управляющие структуры более понятными, особенно в шаблонах, где HTML и PHP-код перемешаны. - Более чёткая структура: Оно обеспечивает явный именованный маркер закрытия для каждого управляющего блока, снижая риск несовпадения фигурных скобок в сложных макетах.
Заключение
Ключевое слово endif позволяет закрывать блок if явным именованным маркером вместо фигурной скобки, что особенно удобно при встраивании PHP в HTML. Для более глубокого изучения обратитесь к полному руководству по if / else / elseif и рассмотрите соответствующие закрывающие конструкции альтернативного синтаксиса: endforeach, endfor и endswitch.