Php: какая разница между ... endwhile; и в то время как {// здесь}

20

В чем разница между

while (expression):

// do stuff

endwhile;

и

while {

}
    
задан redconservatory 10.01.2011 в 21:05
источник
  • Альтернативный синтаксис может затруднить его редактирование, поскольку он не позволяет согласовать фигурные скобки в IDE. –  webbiedave 10.01.2011 в 21:26
  • Можете ли вы объяснить немного дальше? –  redconservatory 10.01.2011 в 21:47
  • дальнейшее объяснение: программирование текстовых редакторов обычно выделяет стандартные синтаксические фигурные скобки «{...}», когда ваш курсор находится над скобкой, поэтому легко идентифицировать блоки операторов и поток управления. Альтернативный синтаксис может быть раздражающим, если есть много вложенных структур управления и плохой отступ. –  agtb 01.04.2013 в 19:15

4 ответа

34

Функциональной разницы нет.

В практическом использовании я нахожу, что:

while (expression):
// do stuff
endwhile;

Более читабельна для дизайнеров, когда вы встраиваете PHP-код в html. IE:

<? while ($cssClass = array_pop($array)): ?>
   <li class="<?=$cssClass?>">
<? endwhile; ?>

В то время как:

while {

}

Более читаем внутри блока php-кода.

    
ответ дан Jeff Davis 10.01.2011 в 21:09
источник
  • Вы даже можете добавить чистый html между скобками {}, например {?> ваш awsome html <? php} ... но, как уже упоминалось, это менее читаемо ... –  jave.web 05.01.2014 в 19:13
6

Нет никакой разницы, это сводится к личным предпочтениям.

    
ответ дан Sebastian Motraghi 10.01.2011 в 21:07
источник
2

Нет никакой реальной разницы при написании кода.

В особых обстоятельствах может быть разница в уровнях удобства. Например, предположим, что вы пишете механизм шаблонов, который преобразует код шаблона в собственный PHP-код, который затем кэшируется и выполняется непосредственно для скорости.

В этом случае тот факт, что while ... endwhile; избегает использования фигурных скобок, может позволить вам упростить ваш алгоритм синтаксического анализа, если, например, он распознает переменные, которые должны быть заменены синтаксисом, например {$var} , который также использует фигурные скобки.

Конечно, это очень небольшое преимущество в действительно необычной ситуации, но вы берете то, что можете. :)     

ответ дан Jon 10.01.2011 в 21:13
источник
2

Разница незначительна, когда код действительно запущен, но при кодировании я считаю, что набрав скобки (1): быстрее, (2): более условно и (3): позволяет уменьшить вероятность ошибки (endwhle кто-нибудь?).

В качестве бонуса редактор, который я использую для автоматического форматирования циклов while (с помощью скобок, по умолчанию) и по дороге, если что-то выключено, встроенная функция сопоставления скобок поймает его.

    
ответ дан Brandon Lee 31.07.2011 в 01:10
источник