PHP: Альтернативный синтаксис управляющих конструкций

PHP поддерживает альтернативный синтаксис для некоторых управляющих конструкций, а именно для: if, switch, while, for и foreach. Основная форма альтернативного синтаксиса заключается в замене открывающей фигурной скобки на двоеточие (:), завершающая фигурная скобка заменяется на ключевое слово endif, endswitch, endwhile, endfor и endforeach, которое соответствует используемой конструкции.

if

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

<?php
  
  $a = 4;
  $b = 3;
  
  if ($a > $b): 
    echo $a . " больше";  
    echo ", чем " . $b;   
  elseif ($a == $b):       // Обратите внимание, здесь elseif записан в одно слово.
    echo $a." равно ".$b;
  else:
    echo $a." меньше ".$b;
  endif;

?>

Замечание: если для определения нескольких условий if/elseif используется альтернативный синтаксис, в этом случае можно использовать только elseif в одно слово, т.е. вы не должны разделять else if в два слова, так как это вызовет фатальную ошибку в PHP.

<?php

  /* Этот код вызовет ошибку: */
  if ($a > $b):
    echo $a." больше, чем ".$b;
  else if ($a == $b):
    echo $a." равно ".$b;
  endif;

?>

Смешивание двух видов синтаксиса в одной конструкции не поддерживается, это правило относится ко всем операторам указанных в этой главе.

<?php

  /*Этот код не будет работать*/
  if($a > $b): 
    echo $a . " больше";  
    echo ", чем " . $b;   
  elseif ($a == $b) {  // нельзя смешивать два вида записей в одной конструкции
    echo $a." равно ".$b;
  }
  else:
    echo $a." меньше ".$b;
  endif;

?>

Правила альтернативного синтаксиса описанные в этом разделе также действуют и для остальных управляющих структур. Поэтому ниже будут просто приведены примеры.

switch

<?php

  $num = 2;
  switch ($num):
    case 0:
      echo "\$num равно 0";
      break;
    case 1:
      echo "\$num равно 1";
      break;
    case 2:
      echo "\$num равно 2";
      break;
    default:
      echo "\$num не равно 0, 1 или 2";
  endswitch;
   
?>

while

<?php

  $num = 5;
  while ($num--):
    echo "$num<br>";
  endwhile;

?>

for

<?php

  for ($k = 1; $k <= 10; $k++):
    echo "$k ";
  endfor;
   

  // пример с вложенным циклом
  for ($i = 0; $i < 4; $i++):
    echo "Внешний цикл.<br>";
    for ($j = 0; $j < 2; $j++):
      echo "Вложенный цикл.<br>";
	endfor;  //вложенные конструкции тоже надо завершать ключевым словом
  endfor;
   
?>

Обратите внимание, для вложенных конструкций, может применяться и синтаксис включающий фигурные скобки, но так делать не рекомендуется, так как это снижает читаемость кода.

<?php

  for ($i = 0; $i < 4; $i++):
    echo "Внешний цикл.<br>";
    for ($j = 0; $j < 2; $j++) {
      echo "Вложенный цикл.<br>";
    }
  endfor;
   
?>

Дополнительные сведения

Теперь рассмотрим вопрос о том, когда лучше использовать альтернативный синтаксис, а заодно вы узнаете, как еще можно использовать управляющие конструкции.

Приведем простой пример:

<?php if ($a == 5): ?>
  <p>A равно 5</p>
<?php endif; ?>

В приведенном примере, блок HTML-кода "A равно 5" вложен внутрь конструкции if написанной с альтернативным синтаксисом. HTML-блок будет показан только в том случае, если переменная $a будет равна 5.

Как вы уже могли догадаться из примера выше, альтернативный синтаксис можно использовать для вставок в HTML-разметку. Так как в этом случае код php и html будут разделены, это упрощает верстку страницы.

Рассмотрим примеры для других конструкций:


  <ul>
    <!-- использование конструкции for-->
    <?php for ($items = 1; $items <= 10; $items++): ?>
      <li><?php echo $items ?></li>
    <?php endfor; ?>
  </ul>
  
  <ul>
    <!--тоже самое, но с использованием конструкции while-->
    <?php $items = 1; while ($items <= 10): ?>
      <li><?php echo $items ?></li>
    <?php $items++; endwhile; ?>
  </ul>
  
  <!--использование конструкции switch-->
  <?php switch ($item):
    case 1: ?>
      <p>Значение равно 1.</p>
      <?php break; ?>
    <?php default: ?>
      <p>Значение не известно.</p>
  <?php endswitch; ?>

Конечно не обязательно использовать представленный синтаксис, можно пользоваться и стандартной записью, с использованием фигурных скобок, но в этом случае код будет менее читабельным.

<?php if ($a == 5) { ?>
  <p>A равно 5</p>
<?php } else { ?>
  <p>A не равно 5</p>
<?php } ?>

Синтаксис оператора foreach и его альтернативная запись будут рассмотрены позднее, а именно во время изучения массивов и объектов.

С этой темой смотрят:

Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011-2016 © puzzleweb.ru

Реклама на сайте | Обратная связь