在Laravel中存储参考数组

时间:2016-04-26 17:40:36

标签: javascript laravel

我有几个永远不会改变的数组。

Gender ( 'M' => trans('core.male'), 
    'F' => trans('core.female'), 
    'X' => trans('core.mixt')


Grades (...the same, with 20 grades that will never change)
AgeCategory (...the same, with 5 categories that will never change)

现在,我不想将它存储在db中,因为它永远不会改变,我可以在本地存储它,以避免无用的查询。

但我需要使用Laravel和Javascript(VueJs)访问它

我该怎么做,而不是重复代码。

我可以在服务器上编写一次,然后调用Web服务,但我认为它会显着增加连接,它可能不是好路径......

任何想法我应该如何处理这种情况?

1 个答案:

答案 0 :(得分:0)

您可以创建相同的字典类(以及它的接口)并保存此数据,如下所示:

// base dictionary
abstract class BaseDictionary 
{
    protected $data = [];

    protected $translatedList = null;

    public function get($key, $default = null) {
        $value = array_get($this->data, $key, $default);
        if ($value != $default) {
            return trans($value);
        }
        return $value;
    }

    public function getList()
    {
        if (is_null($this->translatedList)) {
            $this->translatedList = [];
            foreach ($this->data as $key => $value) {
                $this->translatedList[$key] = trans($value);
            }
        }
        return $this->translatedList;
    }
}

并添加一个混凝土字典定义:

class Gender extends BaseDictionary 
{
    protected $data = [
        'M' => 'core.male',
        'F' => 'core.female',
        'X' => 'core.mixt'
    ];
}

您也可以将其作为单身人士绑定在服务提供商中:

\App::singleton(Gender::class)

之后调用将如下所示:

app(Gender::class)->get('F');

那是为了翻译。而对于整个清单:

app(Gender::class)->getList();