2016-04-26 12 views
0

Ich habe mehrere Arrays, die sich nie ändern werden.Speichern von Referenz-Arrays in 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) 

Jetzt würde ich es nicht gerne in db speichern, weil es nie, ändere ich es lokal speichern könnte, nutzlos Abfragen zu vermeiden.

Aber ich brauche es für den Zugriff sowohl mit Laravel und Javascript (VueJs)

Wie soll ich es tun, nicht, um Code zu duplizieren.

Ich kann das alles in den Server einmal schreiben, und dann Web Service nennen, aber ich denke, es ist deutlich Verbindungen zu erhöhen, ist es nicht der gute Weg sein könnte ...

Jede Idee, wie soll ich verwalten diese Situation?

Antwort

0

können Sie gleiche Wörterbuch-Klasse erstellen (und eine Schnittstelle für sie) und sie diese Daten, wie diese halten:

// 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; 
    } 
} 

und fügen Sie einfach ein concret Wörterbuch-Definition:

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

Sie können auch binden sie es in Ihrem Service-Provider als Singleton:

\App::singleton(Gender::class)

Danach werden die Anrufe werden wie folgt aussieht:

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

, die für die Übersetzung war. Und für die ganze Liste:

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

Verwandte Themen