PHP и оператор перехода, который будет добавлен в PHP 5.3

Извините, что опоздал к этой проблеме - это была известная проблема с предыдущей версией DevStyle на Oxygen + Mojave. Если вы обновляете установку DevStyle или делаете новую установку, у вас больше не должно быть этой проблемы, поскольку мы специально добавили поддержку Mojave (особенно новый темный режим) для Oxygen.

Подробнее об этом конкретном выпуске читайте в сообщении в блоге .

18
задан Community 23 May 2017 в 12:25
поделиться

10 ответов

При написании хорошего кода PHP Вы не должны должны быть использовать goto. Я думаю, что это - ошибка, что они включают его, поскольку это просто приводит к ленивому программированию.

Посмотрите

http://www.procata.com/blog/archives/2004/07/29/goto-in-php/

Для хорошего комментария относительно добавления этого к PHP, и также, здесь на переполнении стека,

GOTO, который все еще рассматривают вредным?

14
ответ дан 30 November 2019 в 07:13
поделиться

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

0
ответ дан 30 November 2019 в 07:13
поделиться

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

OTOH, я запрограммировал на языке, где эти только две структуры были функциями и условным выражением gotos: SNOBOL4. Так как риск запутанного кода был так высок, большинство программистов SNOBOL4 было осторожно для предотвращения этого. Но gotos действительно включал некоторое очень трудное программирование, творческое выполнение цикла и так далее. На самом деле несколько легче сделать циклы FSM-типа, если все, что Вы имеете, является gotos.

0
ответ дан 30 November 2019 в 07:13
поделиться

Я признаю, что никогда не использовал goto в своих кодах.:)

Единственная причина для меня, кажется, упрощает самый короткий маршрут миграции от других языков до PHP (практически только изменяющий язык, не касаясь управляющих структур) и осуществляет рефакторинг код 2-го этапа портирования.

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

1
ответ дан 30 November 2019 в 07:13
поделиться

Нет такой вещи как хорошее использование goto.

Возможно, просто возможно, могло быть полезно выйти из нескольких вложенных циклов, но можно уже сделать, то использование "повреждается 2" и такой. Маркированные повреждения как в Java были бы лучше, чем goto с этой целью.

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

1
ответ дан 30 November 2019 в 07:13
поделиться

В Классическом кодировании VB использование goto удобно для эмуляции обработки ошибок попытки/выгоды как это:

Function MyFunction() as String

'-- start of error block
'
 On Error Goto Catch
   ' do something here that might cause an error
   MyFunction = "IT WORKED"
   Exit Function

 Catch:
   ' error occured - do something else
   MyFunction = Err.Description

 '
 '-- end of error block

End Function

... и вот способ эмулировать попытку/выгоду/наконец..

Function MyFunction() as String

'-- start of error block
'
 On Error Goto Catch
   ' do something here that might cause an error
   MyFunction = "IT WORKED"
   Goto Finally

 Catch:
   ' error occured - do something else
   MyFunction = Err.Description
   Err.Clear

 Finally:
   ' put your finally code here

 '
 '-- end of error block

End Function

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

Во всей честности у меня никогда не было случая в PHP, где я думал мне 'хм, мне жаль, что не было оператора перехода'. Я не читал на том, почему они решили сделать это, но, те парни довольно умны, и взяли PHP в очень хорошие направления до сих пор, поэтому возможно, ожидают потребность, которую мы еще не понимаем.

2
ответ дан 30 November 2019 в 07:13
поделиться

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

2
ответ дан 30 November 2019 в 07:13
поделиться

Я только когда-либо находил два использования для goto:

  1. Убегать из вложенных циклов. Но большинство более новых языков имеет механизм, чтобы сделать это без goto так или иначе (break <number> в PHP, или break <loop label> в Java, и т.д.).
  2. Для поездки на очистку разделяют в конце функции. Но снова, это не часто полезно на собравшем "мусор" языке.

Другими словами, если Вы не знаете, необходимо ли использовать goto для чего-то Вы не были должны.

11
ответ дан 30 November 2019 в 07:13
поделиться

Думаю, сгенерированный код может хорошо использовать goto. Сгенерированный код хорош тем, что вам не нужно его поддерживать - вы просто создаете его заново.

0
ответ дан 30 November 2019 в 07:13
поделиться

Основная польза, которую я вижу в наличии gotos в языке - это возможность переноса между языками. Я написал генератор парсеров на C, который генерировал парсеры с gotos (потому что проще использовать gotos, чем реализовывать более вменяемые управляющие структуры), и теперь перенос его на PHP - не такая уж головная боль.

3
ответ дан 30 November 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: