2009-04-09 3 views
2

Недавно я создал сайт, который просто имеет переменную и проверяет ее на различные возможные значения и дает соответствующий ответ. Программа проходит через множество заявлений else if.Ищете лучший способ проверки переменной повторно

Я уверен, что есть лучший способ сделать это, но не уверен, что использовать. Я все еще изучаю PHP.

Вот исходный код, чтобы дать вам лучшее представление:

http://github.com/r3morse/isitup/blob/a7a972bcf125d1f058a44406a467438d46aa4b16/functions.php

+0

Спасибо всем, похоже, он собирается сказать, как сейчас. –

ответ

5

Возможно переключение является то, что вы после этого, это равносильно, если ... иначе, если ....

http://be.php.net/switch

+0

Спасибо, что выглядит идеально! –

0

Если каждый код нужен другой операции, я не думаю, что вы можете скрыть else..if структуру ..

Вы можете использовать переключатель

switch($code){ 
case "200": 
    //then you code 
break; 
case "401": 
    //other code 
break; 
} 

и т. Д., Но я не думаю, что вы приобретете что-то важное ..

Другой способ может хранить код внутри массива, индексированный как $ code => $ message .. , но только если вы просто печатаете что-то для каждого кода.

0

Другой возможностью было бы определить объект с соответствующими действиями и отправкой.

как ...

<?php 
    class Dispatcher { 
     public function action_404($code) { 
      return 'foo bar ' . $code; 
     } 

     public function action_200($code) { 
      return 'far boo ' . $code; 
     } 

     public function action_301($code) { 
      return $this->action_200($code); 
     } 

     /* and so on */ 

     public function unknownAction($code) { 
      return 'don\'t know ' . $code; 
     } 

    } 

    $code  = (int)$_REQUEST['code']; 
    $methodName = 'action_' . $code; 
    $dispatcher = new Dispatcher(); 

    if (method_exists($dispatcher, $methodName)) { 
     $result = $dispatcher->$methodName($code); 
    } else { 
     $result = $dispatcher->unknownAction($code); 
    } 

    echo $result; 
?> 

на самом деле не имеет смысла в вашем случае жесткой.

Смежные вопросы