我是新来的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;
}

最佳答案

您可以在另一个php文件中创建一个key=>value数组并将其包含在类中
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()将该文件读入数组

关于php - 我的OOP类需要在哪里存储巨大的常量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6247620/

10-11 10:50