2016-05-04 4 views
0

Ich bin neu in Laravel; Ich möchte eine Objektvariable mit dem Schlüssel "myObject" registrieren, so dass sie von allen Benutzern, die die aktuelle Anwendung verwenden, angetreten werden kann und in jedem Controller oder jeder Ansicht hinzugefügt werden kann. Das Objekt kann jederzeit geändert werden (benutze eine set-Methode). Ich suche etwas wie ServletContext in JEE oder etwas wie Registrierung in Zend.Laravel 5 gemeinsames Objekt für die Web-App

$object = new SomeClass(...); 
App::instance('myObject', $myObject); 

In diesem Fall können Sie: Vielen Dank im Voraus für Sie detaillierten Code

Antwort

0

Sie das Objekt in Laravel Service Container als Instanz zum Beispiel binden kann, können Sie Ihre Objektinstanz mit so etwas wie diesem schaffen Binden Sie das Objekt von einem Dienstanbieter. Sie können die App\Providers\AppServiceProvider verwenden, die mit Laravel kommt. Also, in diesem Fall Sie so etwas tun kann:

// Import the dependencies using "use", omitted here 
class AppServiceProvider extends ServiceProvider { 

    public function boot() 
    { 
     // ... 
    } 

    public function register() 
    { 
     $object = new MyObjectClass(); 
     $this->app->instance('myObject', $object); 

     // Share the instance globally in all views 
     view()->share('myObject', $object); 
    } 
} 

Später können Sie $object = app('myObject') verwenden, um die Instanz zu erhalten und wenn Sie es möchten global in Ansichten verwenden, dann können Sie view()->share('myObject', $object) verwenden, so können Sie zugreifen das Objekt direkt von jeder Ansicht usinf $myObject Instanzvariable. Es gibt andere Möglichkeiten, ein Element in den Container zu binden, aber dieser Ansatz entspricht Ihren Anforderungen. Weitere Informationen finden Sie in der Dokumentation.

+0

Danke für Ihren Anteil. Ich kann es jetzt vom Controller bekommen; Wie kann ich die Instanz von einer Aktion aktualisieren? etwas wie "set" neue Instanz aktualisiert, um das app-Objekt – user3094745

+0

Wahrscheinlich, binden Sie einfach die Instanz in Contaainer wie ich in 'Service Provider'. Überprüfen Sie die [api] (https://laravel.com/api/5.2/Illuminate/Container/Container.html) Referenz für verfügbare Methoden. –

+0

Ich habe es vorher getan, aber es gibt keine Anleitung, wie man vom Controller auf den App-Container zugreift. jeder Vorschlag – user3094745