За последние 24 часа нас посетили 62927 программистов и 1743 робота. Сейчас ищут 875 программистов ...

Безусловные переходы в PHP

Тема в разделе "Прочие вопросы по PHP", создана пользователем S.t.A.M., 4 апр 2008.

  1. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Безусловные переходы в PHP. Есть ли такая возможность?
    А то например не всегда удобно писать:

    PHP:
    1.  
    2. if (условие проверки прав) {
    3.   echo "у вас нет прав на этот модуль!";
    4. } else {
    5.   длинный
    6.   длинный
    7.   очень длинный код
    8. }
    9.  
    куда проще
    PHP:
    1.  
    2. if (условие проверки прав) {
    3.   echo "у вас нет прав на этот модуль!";
    4.   goto end;
    5. }
    6.  
    7. длинный
    8. длинный
    9. очень длинный код
    10.  
    11. метка end;
    12.  
    а если несколько условий проверяется - то вообще одни elseif'ы или вообще приходится switch использовать.
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    функции юзай.

    if ($a) return false;
     
  3. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    armadillo, так так и делаю!
    Но все же!

    Вспомним алгоритмизацию, блок-схемы... там все построено на переходах! прямых или по условию...
     
  4. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Когда писалась эта "алгоритмизация"? многоифы нечитабельны, плохо отлаживаемы и наращиваемы.
    Нам важнее возможность легко нарастить функционал.
     
  5. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    К слову в perl есть...
    http://www.qaki.ru/help_perl_484.html

    Но я согласен, что его лучше не использовать или использовать в крайнем случае...
    а лучше реструктурировать программу...

    В общем гугл меня убедил.
    Тему можно кидать в топку!
     
  6. Anonymous

    Anonymous Guest

    В php 5.3.0 есть.
    И это одна из причин, по которой я начинаю задумыватся об отказе от PHP.
    http://bolknote.ru/2008/04/03/~1655/
     
  7. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    ну это же всего лишь инструмент... а использовать его или нет каждый решает сам!
    ИМХО чем больше возможностей у языка тем лучше!

    Хотя конечно если дорабатываешь чужое...

    Мдя, я сегодня какой-то противоречивый... )))
     
  8. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Горбунов Олег
    Мда... Ну может его ещё уберут, хз.

    Был вариант break'а с указанием на куда перепрыгнуть. И прыгнуть можно было только в низ.


    А вообще, если не хотите писать большие условия - юзайте try/catch тада, с ним можно неплохо упростить эти IF.
    Jump ф топку, не факт что он останется вообще.
     
  9. Anonymous

    Anonymous Guest

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

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    [​IMG]

    //ссылку поправил. Luge :oops:
     
  11. Anonymous

    Anonymous Guest

    Psih, отправил?
     
  12. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Само собой
     
  13. Anonymous

    Anonymous Guest

  14. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    где у нас ветка про "индусский код"?

    основные перлы в коде я чищу сразу, но вот сегодня наткнулся
    PHP:
    1.   while($row = mysql_fetch_assoc($chk))
    2.      {
    3.           if(!empty($row))
     
  15. Anonymous

    Anonymous Guest

    Он наверное два презерватива одевает во время секса. На всякий случай...
     
  16. Clone

    Clone Guest

    Чтобы таких глупостей, как в первом посте не возникало, следует писать нормальное развитие событий в if, а обработку ошибки - в else. Второй вариант - return. Третий вариант - вызов методов. Но никак не goto/jump.
     
  17. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    есть еще варианты
    if ($x==3) {

    }elseif($x==4) {

    } elseif ($x==5) {

    }...


    то есть это свитч, но нечитаемо, неудобно и не выделяются общие куски .