在哪里存储我的OOP类所需的巨大常量

时间:2011-06-06 03:56:09

标签: php oop

我是OOP的新手,并想知道什么是正确的OOP方式来做到这一点。我的类有一个方法getValue,它传递输入(一个键),用于搜索数组并返回一个值。

事情是数组接近200个条目并且真正破坏了该方法的可读性,所以我倾向于从这个类中删除它,但不知道在哪里放它。我应该为它创建一个单独的类,还是将它放在常量类Constants::getValue()或任何其他建议中?从这个类中删除它是不对的,因为它应该包含在需要它的对象中?

public function getValue($input) {
    switch ($input) {
        case 'in1' : { $value = array('wsj', 'kwo'); break; }
        case 'in2' : { $value = array('wpo', 'ki2'); break; }
        .....
        default:      { $value = array('wap', 'k90'); break; }
    }
    return $value;
}

2 个答案:

答案 0 :(得分:2)

您可以在另一个php文件中创建一个key =>值数组,并将其包含在您的类

content_array.php:

$ARRAY = array(
               'in1' => array('wsj','kwo'),
               'in2' => array('wpo','ki2'),
                ...
               'default' => array('wap','k90')
              );

然后你的函数可以像这样查找这些值:

public function getValue($input){
    include_once('content_array.php');
    if(array_key_exists($input, $ARRAY)){
        $value = $ARRAY[$input];
    } else {
        $value = $ARRAY['default'];
    }
    return $value;
}

如果您不喜欢这种方法,可以将所有信息放在JSON文件中,然后使用json_decode()将该文件读入数组

答案 1 :(得分:1)

如果有200个案例,并且每个案例都包含从几个常量构造一个小数组,那么我强烈考虑将所有数据移动到一个文件中,并用少量代码替换它。将所有内容存储在地图/查找表中,然后将一些代码从地图中检索出正确的响应。保持这种方式肯定会更容易,代码也更容易理解。