php - 在哪里存储我的 OOP 类需要的巨大常量

标签 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;
}

最佳答案

您可以在另一个 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/

相关文章:

php - 循环不重复表列中的值

php - 准备好的声明不返回任何东西

php - 使用 glob 获取所有文件所有子文件夹和所有隐藏文件

python - 如何返回根据属性值排序的类对象列表

java - 流畅的界面和 Builder 模式有什么区别?

oop - Fortran,(1) 处的终结尚未实现

php - 我们什么时候应该在 php Phalcon 中使用多模块结构(而不​​是简单结构)

PHP Redis 管道 lRange 无法正常工作

php - Laravel (OOP),模型特定值数组(例如用户头衔)

c# - 确保封装的建议