Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Аналог GOTO
 
 автор: faatt   (25.12.2009 в 16:54)   письмо автору
 
 

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

  Ответить  
 
 автор: root   (25.12.2009 в 17:01)   письмо автору
 
   для: faatt   (25.12.2009 в 16:54)
 

А в мануал посмотреть? http://php.net/manual/en/control-structures.goto.php

  Ответить  
 
 автор: Faatt   (25.12.2009 в 17:04)   письмо автору
 
   для: root   (25.12.2009 в 17:01)
 

GOTO насколько я знаю появился только в версии 5.3 Мне это не подходит. Надо бы как-то его обойти.

  Ответить  
 
 автор: Саня   (25.12.2009 в 17:07)   письмо автору
 
   для: Faatt   (25.12.2009 в 17:04)
 

Вы это никак не обойдёте. Хотя можно написать собственный интерпретатор...

  Ответить  
 
 автор: root   (25.12.2009 в 17:09)   письмо автору
 
   для: Faatt   (25.12.2009 в 17:04)
 

Вообще, goto - это зло. Можете объяснить в какой ситуации он Вам понадобился?

  Ответить  
 
 автор: Саня   (25.12.2009 в 17:12)   письмо автору
 
   для: root   (25.12.2009 в 17:09)
 

goto не зло. Но в языках высокого уровня он не нужен.

  Ответить  
 
 автор: root   (25.12.2009 в 17:53)   письмо автору
 
   для: Саня   (25.12.2009 в 17:12)
 

Да, скорее так. В MSSQL я таки пользуюсь goto :).

  Ответить  
 
 автор: Eugene77   (25.12.2009 в 20:20)   письмо автору
 
   для: root   (25.12.2009 в 17:09)
 

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

  Ответить  
 
 автор: Loki   (25.12.2009 в 20:46)   письмо автору
 
   для: root   (25.12.2009 в 17:09)
 

А в чем именно заключается зло? А то как-то с аргументацией этого утверждения всегда трудно...

  Ответить  
 
 автор: neadekvat   (25.12.2009 в 22:24)   письмо автору
 
   для: Loki   (25.12.2009 в 20:46)
 

http://khpi-iip.mipk.kharkiv.edu/library/extent/dijkstra/pp/ewd215.html
Почитайте, возможно, что-то для себя найдете в это статье
Статья по программированию старше меня на >20 лет, елки палки..

Но по-моему, отказываться полностью, материться и тд на него не надо, просто нужно знать, когда лучше применить его, либо наоборот, когда лучше его не применять (что-то типа do..while)

  Ответить  
 
 автор: Faatt   (26.12.2009 в 16:27)   письмо автору
 
   для: neadekvat   (25.12.2009 в 22:24)
 

Мне нужно было это для проверки авторизированности пользователь. Если авторизован, то выводить собственно контент сайта, если нет то выполнять другой код. Использовал до этого if но получалось неуклюже, exit не выводил оставшийся код, вот и решил спросить у вас. Но сейчас проблему решил. Полностью переделываю всю структуру сайта) В очередной раз). Как говорится нет пределу совершенству. Но всё равно всем большое спасибо.

  Ответить  
 
 автор: Loki   (28.12.2009 в 12:48)   письмо автору
 
   для: neadekvat   (25.12.2009 в 22:24)
 

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

  Ответить  
 
 автор: cheops   (29.12.2009 в 20:05)   письмо автору
 
   для: Loki   (28.12.2009 в 12:48)
 

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

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

  Ответить  
 
 автор: Commander   (01.01.2010 в 12:47)   письмо автору
 
   для: Loki   (28.12.2009 в 12:48)
 

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

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

  Ответить  
 
 автор: cheops   (01.01.2010 в 15:49)   письмо автору
 
   для: Commander   (01.01.2010 в 12:47)
 

Хм... ну вообще-то старые программы интенсивно (к месту и не к месту) использующих goto - это та ещё песня - к ним приступиться, то не знаешь как - чуть тронешь, старая логика сыпется. Не совсем это демогогия, если бы goto не мешал и не приводил бы к созданию плохого кода, никто бы вообще на него внимания не обратил бы, как не обращают внимания на другие операторы.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования