2017-12-21 12 views
0

Ich versuche, eine Herstellerklasse zu überschreiben (nicht erweitern). Wenn also die Herstellerklasse aufgerufen wird (innerhalb des Lieferantencodes), möchte ich, dass sie meine benutzerdefinierte Klasse aufruft.Laravel 5.5 Override Vendor-Klasse

Es sieht aus wie ich in die Klasse alias muss meine App/Providers/AppServiceProvider

ich das versucht habe:

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

Aber das tut nichts.

Ich kann meine Klasse fein registrieren lassen:

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

Aber das scheitert dann als der Konstruktor von anderen Variablen relys an diesem Punkt nicht zur Verfügung. Ich buchstäblich müssen nur die App jeden Anruf zu Vendor\VendorName\Class mit App\Vendor\MyCustomClass

+2

Sie sollten eigene Service-Provider erstellen extendind die Zielklasse und überschreibt. – felipsmartins

Antwort

0

So ist die Lösung außer Kraft zu setzen war

php artisan make:provider MyServiceProvider 

einen neuen Serviceprovider erstellen, die den Vendor Service-Provider erweitert (in config/app.php gefunden). Innerhalb dieses Serviceprovider, fügen Sie meinen Alias ​​innerhalb der überschriebenen Register Methode

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