2017-02-25 12 views
1

私は、laravel 5.4で新しいカスタムクラスを作成して、ユーザータイプをチェックしようとしています。カスタムクラスとServiceProvider - Laravel 5.4

私は新しいフォルダアプリケーションの\ ItSolution、コードにこの新しいクラスを追加します。コード、私はすべての私のアプリでは、このクラスを使用したいので、私は新しいのServiceProviderをしよう

<?php 

namespace App\ItSolution; 

class DemoClass { 


    public function getPermission() { 
     switch(Auth::user()->user_type_id) { 
      case 1: 
       return 'admin'; 
       break; 
      case 2: 
       return 'promoter'; 
       break; 
      case 3: 
       return 'customer'; 
       break; 
      default: 
       return false; 
     } 
    } 
} 

<?php 

namespace App\Providers; 

use Illuminate\Support\ServiceProvider; 
use App; 

class AuthLibServiceProvider extends ServiceProvider 
{ 
    /** 
    * Bootstrap the application services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
     // 
    } 

    /** 
    * Register the application services. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     App::bind('democlass', function() 
     { 
      return new \App\ItSolution\DemoClass; 
     }); 
    } 
} 

と私は同じフォルダのアプリの\ ItSolutionに私のクラスのための新しいファサードを作り、コード:その後

<?php 

namespace App\ItSolution; 
use Illuminate\Support\Facades\Facade; 

class DemoClassFacade extends Facade { 
    protected static function getFacadeAccessor() { return 'democlass'; } 
} 

私はこの李を追加アプリ/ config.phpの

'aliases' => [ 
... 
'DemoClass'=> App\ItSolution\DemoClassFacade::class, 
] 



'providers' => [ 
    ... 
    App\Providers\AuthLibServiceProvider::class, 
    ] 

でNEが、私は私のコントローラ DemoClassにDemoClassエイリアスを使用しようとすると、私はこのエラーを持っている:: getPermission():

クラス「のApp \のHttp \コントローラー\ DemoClass 'が見つかりません

どうすればいいですか、Thnaks。

答えて

1

laravel 5.4ではFacadeを登録するサービスプロバイダは必要ありません。自動Facadaesを使用することができます.DemoClassのみを定義する必要があります。

すなわちコントローラで:

use Facades\ { 
    App\ItSolution\DemoClass 
}; 

そして

DemoClass::getPermission() 

ソースhere

1

あなたがファサードとして、このクラスを登録しているので、あなたがクラスの先頭にこれを追加する必要があります:

use DemoClass; 

あるいはファサードを使用しているとき、あなただけの完全な名前空間を使用することができます。

\DemoClass:: 
+0

はそれが仕事だ、どうもありがとう、しかし、あなたに使用する方法についてのアイデアを持っている関数を呼び出しますビューのファサード?ありがとうございました。 –

+0

@MalekBenelouafi私はファサードの代わりにヘルパーを使用しているので、100%は確信していませんが、完全な名前空間 '\ DemoClass ::'でそれを使用しようとします。 –