1

私はLaravel 5.2を使ってWebアプリケーションを開発しています。私はLaravelが依存性注入をサポートしていることを知っています。私はミドルウェアでやっています。しかし、依存関係は注入されず、注入されるクラスのインスタンスは常にnullです。これは私がやったことです。Laravel 5.2のミドルウェアへの依存性を注入できません

これは私がこの

Route::group(['middleware'=>'store'],function(){ 
    Route::get('home','[email protected]'); 
    Route::get('/','[email protected]'); 
}); 

私はホーム・ページにアクセスすると、それは私を与えているようにルートをconfigのこの

protected $routeMiddleware = [ 
     . 
     . 
     . 
     'store' =>\App\Http\Middleware\StoreMiddleware::class 
    ]; 

のようにカーネル内で宣言私のミドルウェア

class StoreMiddleware 
{ 
    private $categoryRepo; 

    function __construct(CategoryRepo $categoryParam) 
    { 
     $categoryRepo = $categoryParam; 
    } 

    public function handle($request, Closure $next) 
    { 
     $categories = $this->categoryRepo->getTreeViewCategories(); 
     view()->share(['categories'=>$categories]); 
     return $next($request); 
    } 
} 

ですこのエラー

FatalThrowableError in StoreMiddleware.php line 20: 
Call to a member function getTreeViewCategories() on null 

ご覧のとおり、categoryRepoはnullであり、注入されていません。

これは、CategoryRepoモデル内のgetTreeViewCategories()メソッドです。

function getTreeViewCategories() 
    { 
     $items = array(); 
     return $items; 
    } 

ご覧のとおり、私はモデルでは注射が機能しているかどうかを確認するために何もしませんでした。私のコードで何が間違っていますか?

答えて

2

あなたはここでオブジェクトのプロパティを割り当てされていません。これに

function __construct(CategoryRepo $categoryParam) 
{ 
    $categoryRepo = $categoryParam; 
} 

変更を:

function __construct(CategoryRepo $categoryParam) 
{ 
    $this->categoryRepo = $categoryParam 
} 
+0

ああをuに感謝します。私の間違い。 –