Проблема с выводом Notice(хороший тон)

Hugo Borz

Новичок
Проблема с выводом Notice(хороший тон)

Короче ситуация такая у меня есть файл в котором собраны функции по работе со статьями в него я передаю значение form и при помощи свитча выбираю нужную функцию. Передача параметра у меня происходит или по прямой ссылке(метод GET) или через форму (метод POST)
PHP:
switch ($_POST['form'])
 {
      case "addart" :   addart(); break;
      case "addpart" :  addpart(); break;
      case "editart" :  editart(); break;
      case "showhide" : showhide(); break;
 }

switch ($_GET['form'])
 {
      case "showhide" : showhide(); break;
      case "del" :      del(); break;
      case "delpart" :      delpart(); break;
 }
так вот когда передается параметер одним из методов то выдает предупреждение о том что второй не определен т.е. если я передам параметер методом GET например http://.../index.php?id_article=7&form=del то выдаст что POST[‘form’] не определен и наоборот. Знаю что Notice не считается ошибкой но все же хотелось бы сделать так что бы лишних выводов предупреждений не было! Знаю о параметре который прописывается в начале скрипта что бы не выводились сообщения об ошибках, но также знаю что это не хороший тон программинга. Короче что делать как убрать сообщение или все таки прописывать тот параметр это нормально?
 

SiMM

Новичок
[m]isset[/m], но я бы ПОДОБНЫЙ код вообще переписал
PHP:
$post_functions = array('addart','addpart','editpart','showhide');
$get_functions = array('showhide','del','delpart');
if (isset($_POST['form']) && in_array($func = $_POST['form'],$post_functions)) $func();
elseif (isset($_GET['form']) && in_array($func = $_GET['form'],$get_functions)) $func();
else echo 'Функция неопределена';
 

Hugo Borz

Новичок
Спасибо за совет, все работает. SiMM, если не сложно поясни вкратце чем такой метод с использование массива лучше?
 

.des.

Поставил пиво кому надо ;-)
Автор оригинала: Frol
тем, что уменьшает дублирование.
также как и гибкость.

Краткость кода, это хорошо, но не в ущерб гибкости и читабельности.

Что будем делать если 'addart' будет добавляться функцией AddArticle? или Article::add() или результат который вернула функция должен быть сохранен в разных переменных? Контроллер будет усложняться и вместо проверенного switch получим трудноуправляемый код.

HugoBorz можете писать как писали. Для данного конкретного случая можете использовать @
 

.des.

Поставил пиво кому надо ;-)
bqm можно, можно и просто isset, вопрос не в этом, этот код не станет лучше/надежнее если его переписать так
PHP:
if(isset($_POST['form'])) {
  switch ($_POST['form']) { 
      case "addart" :   addart(); break; 
      case "addpart" :  addpart(); break; 
      case "editart" :  editart(); break; 
      case "showhide" : showhide(); break; 
  } 
}
else if(isset($_GET['form'])) {
  switch ($_GET['form']) { 
      case "showhide" : showhide(); break; 
      case "del" :      del(); break; 
      case "delpart" :      delpart(); break; 
  }
}
 

bgm

 
isset, в принципе, можно использовать, но только если не требуется проверка значения на NULL.

P.S. Мне вот не нравится использовать @ - просто из чистого эстетства, а так же потому, что это есть "грубый хак" :)
 

SiMM

Новичок
> Для данного конкретного случая можете использовать @
Про собаку не сказал умышленно. Глянул на число постов и решил что не стоит. Как бы она у него к каждой бочке затычкой не стала.
 

Andreika

"PHP for nubies" reader
.des.
вот тока без "else" в if , а то смысл оригинального кода сильно поменяется
 

SiMM

Новичок
> вот тока без "else" в if
А вот не факт, что ему это не нужно.

> если я передам параметер методом GET например http://.../index.php?id_article=7&form=del то выдаст что POST[‘form’] не определен и наоборот.
 

Frol

Новичок
Что будем делать если 'addart' будет добавляться функцией AddArticle? или Article::add() или результат который вернула функция должен быть сохранен в разных переменных? Контроллер будет усложняться и вместо проверенного switch получим трудноуправляемый код.
я привык решать конкретные задачи, а не выдумывать.
 
Сверху