Множественное ветвление в алгоритме, кто виноват и что делать?
ru_php — 10.01.2010
Иногда страница (имею ввиду php-скрипт или контроллер) может
выполнять разные действия, например страница mysite.com/gallery
может использоваться в режиме просмотра (view), редактирования
(edit), добавления (add) и удаления (delete). Варианты адресов
тогдаsite.com/gallery
site.com/gallery/edit (либо site.com/gallery?action=edit, не суть)
site.com/gallery/add
site.com/gallery/delete
Теперь к главному - обработка действия выполняется свитчем
switch ($action){
case 'edit': ... break;
case 'add': ... break;
case 'delete': ... break;
case 'view': default: ...
}
Иногда бывает нужно дополнительное деление по поддействиям:
site.com/gallery/add/category
site.com/gallery/add/item
switch ($action){
...
case 'add':
switch ($what){
case 'category': { ... } break;
case 'item': { ... } break;
}
break;
...
}
аналогично для edit и delete
switch ($action){
case 'edit':
switch ($what){
case 'category': /* много строк */ break;
case 'item': /* много строк */ break;
}
break;
case 'add':
switch ($what){
case 'category': /* много строк */ break;
case 'item': /* много строк */ break;
}
break;
case 'delete':
switch ($what){
case 'category': /* много строк */ break;
case 'item': /* много строк */ break;
}
break;
case 'view': default: ...
}
Как вы уже понимаете, действия и поддействия могут добавляться и дальше, и однажы мы обнаружим что написали свитч длиной пятьсот и больше строк. Запутаться сложновато, но и листать его туда-сюда - то ещё удовольствие.
Что же делать, как же быть? можно /* много строк */ вынести в функции, но в них будут уже другие пространства имён, что создаст сложности. Можно настроить редактор, чтобы он сворачивал case ... break, уменьшая занятое место на экране (как это сделать в эклипсе, кто подскажет?). Ещё варианты?
Виртуальные номера для регистрации: удобство и безопасность современных решений
"Моя земля! Понаехали": Два "джигита" на конях отхлестали пенсионеров плётками
История слова «goodbye»
ВНОВЬ СТАВЛЮ КРАСНЫЕ СТИКЕРЫ!!!
Производство мяса в России. И что из этого мяса ели в РСФСР
Первые заморозки
РрЫы
Соударение с машиной. Занавес. Последняя операция
Питер, октябрь-2025. Практическое и оглавление

