2017-12-21 89 views
0

ベンダークラスをオーバーライドしようとしています(拡張していない)。したがって、(ベンダーコード内で)ベンダークラスが呼び出されるたびに、カスタムクラスを呼び出すようにします。Laravel 5.5ベンダークラスをオーバーライド

私はこの試した私のApp/Providers/AppServiceProvider

でクラスをエイリアスする必要があるように見えます:

$loader = \Illuminate\Foundation\AliasLoader::getInstance(); 
$loader->alias('Vendor\VendorName\Class', 'App\Vendor\MyCustomClass'); 

をしかし、これは何もしません。

私は私のクラスには、罰金、登録を受けることができます。

$this->app->register(
     'App\Vendor\MyCustomClass' 
    ); 

しかし、コンストラクタは、その時点で利用できない他の変数にrelysとしてこれは、失敗します。私は文字通りので、解決策は、(設定/ app.php内で見つかった)ベンダー、サービスプロバイダーを拡張し、新しいのServiceProvider

php artisan make:provider MyServiceProvider 

を作成したApp\Vendor\MyCustomClass

+2

以内に私の別名を追加先のクラスをextendindし、それを上書きします。 – felipsmartins

答えて

0

Vendor\VendorName\Classへの呼び出しを無効にするアプリが必要。それのServiceProviderの中で、独自のサービスプロバイダを作成するためにあなたがすべき上書きRegister方法

$loader->alias('Vendor\VendorName\Class', 'App\Vendor\MyCustomClass');