Проблема с выводом 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 не считается ошибкой но все же хотелось бы сделать так что бы лишних выводов предупреждений не было! Знаю о параметре который прописывается в начале скрипта что бы не выводились сообщения об ошибках, но также знаю что это не хороший тон программинга. Короче что делать как убрать сообщение или все таки прописывать тот параметр это нормально?
 
[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 'Функция неопределена';
 
Спасибо за совет, все работает. SiMM, если не сложно поясни вкратце чем такой метод с использование массива лучше?
 
Автор оригинала: Frol
тем, что уменьшает дублирование.
также как и гибкость.

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

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

HugoBorz можете писать как писали. Для данного конкретного случая можете использовать @
 
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; 
  }
}
 
isset, в принципе, можно использовать, но только если не требуется проверка значения на NULL.

P.S. Мне вот не нравится использовать @ - просто из чистого эстетства, а так же потому, что это есть "грубый хак" :)
 
> Для данного конкретного случая можете использовать @
Про собаку не сказал умышленно. Глянул на число постов и решил что не стоит. Как бы она у него к каждой бочке затычкой не стала.
 
.des.
вот тока без "else" в if , а то смысл оригинального кода сильно поменяется
 
> вот тока без "else" в if
А вот не факт, что ему это не нужно.

> если я передам параметер методом GET например http://.../index.php?id_article=7&form=del то выдаст что POST[‘form’] не определен и наоборот.
 
Что будем делать если 'addart' будет добавляться функцией AddArticle? или Article::add() или результат который вернула функция должен быть сохранен в разных переменных? Контроллер будет усложняться и вместо проверенного switch получим трудноуправляемый код.
я привык решать конкретные задачи, а не выдумывать.
 
Сверху