寻找一种反复检查变量的更好方法

时间:2009-04-09 13:33:23

标签: php

我最近创建了一个只有一个变量的网站,并根据各种可能的值进行检查并给出适当的响应。该程序使用了大量else if语句。

我确信有更好的方法可以做到这一点,但不确定要使用什么。我还在学习PHP。

以下是为您提供更好主意的源代码:

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

4 个答案:

答案 0 :(得分:5)

可能切换就是你所追求的,它等同于if ... else if ....。

http://be.php.net/switch

答案 1 :(得分:0)

答案 2 :(得分:0)

如果每个代码都需要不同的操作,我不认为你可以伪装else..if结构..

您可以使用开关

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

等等..但我不认为你会获得相关的东西..

其他方式可以存储数组内的代码,索引类似于$ code => $消息.. 但只有你只是为每个代码打印一些东西。

答案 3 :(得分: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;
?>
在你的情况下,

确实没有意义。