2009-04-09 40 views
2

我最近创建了一个只包含变量的站点,并根据各种可能的值对其进行检查并给出了适当的响应。该程序使用了很多else if语句。寻找更好的方法来重复检查变量

我确信有一个更好的方法来做到这一点,但不知道要使用什么。我仍然在学习PHP。

这里的源代码给你一个更好的主意:

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

+0

谢谢大家,它看起来就像现在这样说。 – 2009-04-09 19:17:38

回答

5

可能切换为你以后,就相当于,如果...否则,如果...。

http://be.php.net/switch

+0

谢谢,那看起来很完美! – 2009-04-09 13:43:54

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

并没有真正让你的情况硬朗感。