Извините, что опоздал к этой проблеме - это была известная проблема с предыдущей версией DevStyle на Oxygen + Mojave. Если вы обновляете установку DevStyle или делаете новую установку, у вас больше не должно быть этой проблемы, поскольку мы специально добавили поддержку Mojave (особенно новый темный режим) для Oxygen.
Подробнее об этом конкретном выпуске читайте в сообщении в блоге .
При написании хорошего кода PHP Вы не должны должны быть использовать goto. Я думаю, что это - ошибка, что они включают его, поскольку это просто приводит к ленивому программированию.
Посмотрите
http://www.procata.com/blog/archives/2004/07/29/goto-in-php/
Для хорошего комментария относительно добавления этого к PHP, и также, здесь на переполнении стека,
goto
должно действительно быть что-то, хотя это было на языке и будет сделано устаревшим из-за лучшей практики программирования. Добавление это теперь походит назад шаг.
Как был сказан прежде, goto только действительно требуется в некоторых типах алгоритмов, обычно те, которые подходят в синтаксическом анализе естественных языков или конечных автоматах. Я никогда не пропускал отсутствие goto в PHP.
OTOH, я запрограммировал на языке, где эти только две структуры были функциями и условным выражением gotos: SNOBOL4. Так как риск запутанного кода был так высок, большинство программистов SNOBOL4 было осторожно для предотвращения этого. Но gotos действительно включал некоторое очень трудное программирование, творческое выполнение цикла и так далее. На самом деле несколько легче сделать циклы FSM-типа, если все, что Вы имеете, является gotos.
Я признаю, что никогда не использовал goto в своих кодах.:)
Единственная причина для меня, кажется, упрощает самый короткий маршрут миграции от других языков до PHP (практически только изменяющий язык, не касаясь управляющих структур) и осуществляет рефакторинг код 2-го этапа портирования.
Лично я верю в образованных коллег и поскольку они могут избежать условных повреждений от циклов, они смогли бы сопротивляться искушению goto.
Нет такой вещи как хорошее использование goto.
Возможно, просто возможно, могло быть полезно выйти из нескольких вложенных циклов, но можно уже сделать, то использование "повреждается 2" и такой. Маркированные повреждения как в Java были бы лучше, чем goto с этой целью.
Возможно, также полезно с кодом, написанным, не используя исключения, когда необходимо пропустить в конец набора операторов, после того как каждый перестал работать. Но это только исправляет дрянной код с более дрянным кодом.
В Классическом кодировании 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 в очень хорошие направления до сих пор, поэтому возможно, ожидают потребность, которую мы еще не понимаем.
Это может использоваться для отладки целей, таким образом, Вы не должны комментировать или осуществлять рефакторинг блоки кода только к временному изменению рабочий процесс.
Я только когда-либо находил два использования для goto
:
goto
так или иначе (break <number>
в PHP, или break <loop label>
в Java, и т.д.).Другими словами, если Вы не знаете, необходимо ли использовать goto
для чего-то Вы не были должны.
Думаю, сгенерированный код может хорошо использовать goto. Сгенерированный код хорош тем, что вам не нужно его поддерживать - вы просто создаете его заново.
Основная польза, которую я вижу в наличии gotos в языке - это возможность переноса между языками. Я написал генератор парсеров на C, который генерировал парсеры с gotos (потому что проще использовать gotos, чем реализовывать более вменяемые управляющие структуры), и теперь перенос его на PHP - не такая уж головная боль.