2009-04-09 11 views
2

J'ai récemment créé un site qui a simplement une variable et le compare à diverses valeurs possibles et donne une réponse appropriée. Le programme passe par l'utilisation de nombreuses instructions else if.Vous cherchez une meilleure méthode de vérification d'une variable à plusieurs reprises

Je suis sûr qu'il existe une meilleure méthode pour ce faire, mais je ne sais pas quoi utiliser. Je suis encore en train d'apprendre PHP.

Voici le code source pour vous donner une meilleure idée:

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

+0

Merci à tous, on dirait que ça va dire comme c'est le cas pour l'instant. –

Répondre

5

Probablement commutateur est ce que vous êtes après, il est équivalent à if ... else if ....

http://be.php.net/switch

+0

Merci, ça a l'air parfait! –

0

Si tous les codes ont besoin d'une autre opération, je ne pense pas que vous pouvez déguiser la structure else..if ..

Vous pouvez utiliser un commutateur

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

et ainsi de suite .. mais je ne pense pas que vous allez gagner quelque chose de pertinent ..

D'autre façon peut être stocké dans le code à l'intérieur d'un tableau, indexé comme $ code => $ message .. mais seulement si vous imprimez quelque chose pour chaque code.

0

une autre possibilité serait de définir un objet avec pour les actions appropriées et d'expédition.

comme ...

<?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; 
?> 

ne fait pas vraiment de sens dans votre cas difficile.

Questions connexes