2009-04-09 3 views
2

Ich habe vor kurzem eine Website erstellt, die einfach eine Variable hat und überprüft es gegen verschiedene mögliche Werte und gibt eine angemessene Antwort. Das Programm durchläuft viele Anweisungen else if.Auf der Suche nach einer besseren Methode zum wiederholten Überprüfen einer Variablen

Ich bin sicher, es gibt eine bessere Methode, dies zu tun, aber nicht sicher, was zu verwenden ist. Ich lerne immer noch PHP wirklich.

Hier ist die Quellcode Ihnen eine bessere Vorstellung zu geben:

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

+0

Vielen Dank, es sieht so aus, als würde es sagen, wie es für jetzt ist. –

Antwort

5

Wahrscheinlich wechseln ist, was Sie nach, es zu if ... else gleichwertig ist, wenn ....

http://be.php.net/switch

+0

Danke, das sieht perfekt aus! –

0

Wenn jeder Code eine andere Operation brauchen, ich glaube nicht, dass Sie die else..if Struktur verschleiern kann ..

Sie einen Schalter verwenden könnte

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

und so weiter .. aber ich glaube nicht, dass Sie etwas relevantes bekommen werden ..

Andere Möglichkeit kann alle Code in einem Array speichern, indiziert wie $ code => $ message .. aber nur, wenn Sie nur etwas für jeden Code drucken.

0

eine andere Möglichkeit wäre, ein Objekt mit den entsprechenden Aktionen und Versand zu definieren.

wie ...

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

nicht macht nicht wirklich Sinn in Ihrem Fall hart.

Verwandte Themen