W3docs

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.

Практика

Практика
Какие из следующих утверждений верны относительно директивы endif в PHP?
Какие из следующих утверждений верны относительно директивы endif в PHP?
Was this page helpful?