2016-05-04 20 views
0

私はlaravelを初めて使っています。私はオブジェクト変数をキー "myObject"で登録して、現在のアプリケーションを使っているすべてのユーザーがアクセスできるようにし、任意のコントローラまたはビューにアクセスできます。私はいつでもオブジェクトを変更することができます(setメソッドを使用します)。私はJEEでServletContextのようなものを探したり、Zendのレジストリのようなものを探します。することができます。この場合、Laravel 5 Webアプリケーションの共有オブジェクト

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

:あなたのために事前に おかげで、詳細なコード

答えて

0

あなたは例えばインスタンスとしてLaravel​​にオブジェクトをバインドすることができ、あなたはこのようなものを使用して、オブジェクトのインスタンスを作成することができオブジェクトをサービスプロバイダからバインドします。 Laravelに付属のApp\Providers\AppServiceProviderを使用できます。したがって、この場合には、あなたはこのような何かを行うことがあります。

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

後で、インスタンスを取得するために$object = app('myObject')を使用することができますし、グローバルビューでそれを使用したい場合は、アクセスできるように、あなたはview()->share('myObject', $object)を使用することができます任意のビューからオブジェクトを直接入力します。$myObjectインスタンス変数。アイテムをコンテナにバインドする他の方法もありますが、この方法はあなたのニーズを満たしています。詳細については、マニュアルを参照してください。

+0

あなたのシェアをありがとう。私は今コントローラーからそれを得ることができます。アクションからインスタンスを更新するにはどうすればよいですか? "set"のようなもの新しいインスタンスがアプリケーションオブジェクトに更新される – user3094745

+0

おそらく、単にサービスプロバイダに行ったように、インスタンスをcontaai​​nerに再バインドするだけです。利用可能な方法については、[api](https://laravel.com/api/5.2/Illuminate/Container/Container.html)のリファレンスを確認してください。 –

+0

私は前にそれをしましたが、コントローラからアプリケーションコンテナにアクセスする方法についてのガイドはありません。任意の提案 – user3094745

関連する問題