2017-02-16 10 views
0

Ist es möglich, einen Dienstanbieter außerhalb des App/Providers-Verzeichnisses in Laravel zu haben? Ich benutze Laravel 5.4.Laravel-Dienstanbieter in benutzerdefinierten Namespace

Normalerweise lege ich alle meine eigenen Klassen in ein src/CUSTOM_NAMESPACE-Verzeichnis. Ich habe alle meine Controller, Modelle, Repositories usw. dort und alles funktioniert gut. Ich kann jedoch keinen Service Provider von dort aus arbeiten lassen.

ich eine PSR4 Autoloader Definition hinzugefügt haben, wie so in composer.json ...

"psr-4": { 
    "App\\": "app/", 
    "CUSTOM_NAMESPACE\\": "src/" 
} 

ich den Service-Provider hinzugefügt haben app.php ...

CUSTOM_NAMESPACE\Providers\BlahServiceProvider::class, 

die ich kenne, funktioniert, weil alle anderen Klassen geladen werden. Ich habe dreifach überprüft die Rechtschreibung, Fall usw.

erhalte ich immer die folgende Fehlermeldung ...

[Symfony\Component\Debug\Exception\FatalErrorException] 
Class 'CUSTOM_NAMESPACE\Providers\BlahServiceProvider' not found 

Ich habe versucht, Komponist Dump-automatisches Laden läuft, der gut arbeitet, aber wenn ich laufen Befehle wie PHP Handwerker Optimierung oder Composer Update Ich erhalte diesen Fehler.

Ich kann nichts in den Dokumenten finden, die besagt, dass sich Anbieter im App-Verzeichnis befinden müssen.

Ich habe mich gewendet, den Dienstanbieter für jetzt in das App-Verzeichnis zu setzen, dachte aber nur, ich würde die Frage stellen, da ich ein wenig perplex bin, dass ich nicht alle meine Klassen in meinem src-Verzeichnis unter meinem eigenen Namensraum haben kann .

Ist jemand schon einmal auf dieses Problem gestoßen? Soll das nicht so funktionieren?

Vielen Dank im Voraus.

+0

'app.php' hat viele Anbieter, die nicht im App-Namespace sind, also sollte es definitiv funktionieren. Überprüfen Sie, ob der Composer-Autoloader die Klassen korrekt ausgewählt hat. – apokryfos

+0

Überprüfen Sie, ob der Klassenname in der Datei mit dem Namen der Datei übereinstimmt. Andere Klassen in diesem Namespace haben keine Probleme? –

+0

Der Dateiname und der Klassenname sind identisch. Sogar kopiert und eingefügt, um sicher zu sein. – Steven1978

Antwort

1

Sie müssen composer dump-autoload ausführen.

+0

Wie in der Frage angegeben. Ich habe bereits versucht, diesen Befehl auszuführen. – Steven1978

+0

Ich fürchte, ich habe vergessen, als ich dein Szenario versuchte. In meinem Fall verschwindet der Fehler jedoch, nachdem ich den Befehl ausgeführt habe. – motia

Verwandte Themen