Когда я использую if/endif против If {}?

Ну, сам вопрос объяснительный.

В PHP, когда я использую нотацию if/endif вместо стандартной нотации if(something){}?

Пример:

<?php if($a == 5): ?>
A is equal to 5
<?php endif; ?>

Versus:

<?php if($a == 5){ ?>
A is equal to 5
<?php } ?>

Ответ 1

Другие дали ответ "для шаблонов", но на самом деле не объяснили почему. Кудрявые скобки отлично подходят для обозначения блоков, но они полагаются на отступы, чтобы их можно было читать четко. Так что это довольно ясно:

<?php
if (1 == 2)
{
    while (1 < 2)
    {
        doSomething();
    }
}

Очевидно, какая скобка соответствует тому, что.

Если, однако, вы попадаете в блок HTML, вы, вероятно, перестанете отступать чисто. Например:

<?php
if (1 != 2) { ?>
<div>This always happens! <?php while (true) { ?>
  <p>This is going to cause an infinite loop!</p>
<?php }
}

Это трудно понять. Если вы используете стиль endif, он выглядит немного чище:

<?php
if (1 != 2): ?>
<div>This always happens! <?php while (true): ?>
  <p>This is going to cause an infinite loop!</p>
<?php endwhile;
endif;

Содержание кода более четко показывает, что делается. Для этого ограниченного случая это более разборчиво.

Ответ 2

Короткий ответ:

Всегда используйте if($something) { } и в значительной степени никогда не используйте if/endif. Это стандартно с PHP 4.0.0, и хотя старый синтаксис не уходит, это тот, которого все ожидают.

Если вы действительно ищете случай, когда вы можете использовать if/endif, тогда это при использовании php в качестве языка шаблона.

Некоторым людям нравится что-то вроде этого:

<?php if ($foo): ?>
Hi There
<?php else: ?>
cya!
<?php endif; ?>

лучше, чем

<?php if ($foo) { ?>
Hi There
<?php } else { ?>
cya!
<?php } ?>

и imho это потому, что каждая строка "говорит", и это может быть полезно, когда между тегами php существует много html.

Ответ 3

Оба метода приемлемы. Некоторые утверждают, что альтернативный синтаксис (endif) более разборчив в шаблонах. IMHO, с современной синтаксической раскраской/подсветкой ошибки, которая больше не выполняется. Просто выберите стиль и придерживайтесь его.

Ответ 4

Это стилистический выбор. Они аналогичны, и один не лучше другого.

Первый может быть хорош в определенных обстоятельствах, потому что его легче читать при погрязнении в середине набора блоков HTML.

Ответ 5

В основном я использую if/endif при остановке и запуске блока кода php между ними, поэтому почти всегда, когда выводится raw html.

Например:

<?php if ($n == 3): ?>
Lorem ipsum.
<?php endif; ?>

Это выглядит, по крайней мере, на мой взгляд, лучше, чем следующее:

<?php if ($n == 3) { ?>
Lorem ipsum.
<?php } ?>

Ответ 6

Вы можете использовать оба варианта, но предпочтительный стиль и известный в настоящее время стиль являются стандартными if(expr).