我有几个永远不会改变的数组。
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服务,但我认为它会显着增加连接,它可能不是好路径......
任何想法我应该如何处理这种情况?
答案 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();