2017-07-08 7 views
0

Ich bin neu in der Welt von OOP und ich versuche, eine Laravel-Anwendung zu machen.Laravel PHP Globales Objekt

Die App, die ich mache, soll ein Spiel erleichtern. Das Spiel hat ein Startdatum und ein Enddatum. Während meiner Bewerbung ist es jedoch nett, den Zeitraum des Spiels (Enddatum - Startdatum) und die relative Periode im Vergleich zu einem Jahr (Zeitraum/365) zu kennen. Ich habe das Startdatum und das Enddatum in einer Konfigurationsdatei definiert.

Ist es klug, eine Klasse zu erstellen, in der ich die Periode und die relative Periode festlege? Die Klasse sollte nur einmal instanziiert werden ... also ein Singleton?

Alle Hinweise/Best Practices sind willkommen!

+0

Ist Ihr Spiel nur für eine Sitzung im Browser bestehen bleiben? – McRed

+0

Ich würde es in die Sitzung setzen. –

+0

@McRed Nein, während eines Zeitraums von etwa 3 Wochen müssen die Benutzer versuchen, Energie zu sparen. Die Einstellung ist also für jeden registrierten Benutzer gleich. –

Antwort

0

Sie könnten einfach eine statische Klasse erstellen, sodass sie nie instanziiert werden muss.

Wenn Sie einen Singleton erstellen möchten, können Sie überprüfen die Laravel docs:

$this->app->singleton('HelpSpot\API', function ($app) { 
    return new HelpSpot\API($app->make('HttpClient')); 
}); 

Sobald Sie dies dem register Methode eines Dienstanbieters hinzugefügt haben (zB AppServiceProvider) Sie können es nach Typ Zugriff es Hinting in einer Controller-Methode oder durch den Aufruf $api = resolve('HelpSpot\API'); (siehe the docs)

+0

Großartig, machte eine Klasse, die eine Methode hat, um die Eigenschaften zurückzugeben. Im AppServiceProvider habe ich den Singleton registriert. Funktioniert super :) –