Eine Datei, in der laravel-controller?
Ich bin erstellen Sie ein Projekt mit einigen zusätzlichen Funktionalität in form eines .php-Datei-API enthält einige Funktionen und einige Klassen(von denen einige Klassennamen sind in Konflikt mit Laravel gebaut in Klasse Namen) so, meine Frage, wie soll ich diese Datei in meinem Laravel-Controller aufrufen von Funktionen in der Datei, die durch die Verwendung der Klassen der Datei, ohne sich Laravel Klassen und mit weniger oder keine änderung .php-API Datei?
Anmerkung* ich bin mit Laravel-5.1
- Was meinst du damit, indem Sie sagen, dass Klassennamen in Konflikt sind? Seit PHP 5.3 ist es möglich, Klassen mit dem gleichen Namen haben, solange Sie in unterschiedlichen namespaces.
- Die Datei enthält die Antwort-Klasse in Konflikt mit Laravel Antwort-Klasse und ein paar mehr Klassen
- Sicher, aber ist die Antwort, die Klasse zu Beleuchten\Http-namespace?
- NÖ, alle Klassen und Funktionen in der gleichen Datei, nur der name Konflikt.
- Ok, dann gehören die alias-Datei und den class-Namen wie in der Antwort unten. Sie müssen nur alias-die, die Sie mit Ihrem controller.
- aber wo sollte ich die Datei, wenn ich will, es zu verschmelzen mit Laravel und wie die Zusammenführung mit Laravel?
- Lassen Sie uns weiter, diese Diskussion im chat.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie eine benutzerdefinierte Datei mit einigen Klassen/Funktionen, die geladen werden müssen, für jede Anfrage, die Sie benötigen, um sicherzustellen, dass es Hinzugefügt, um den autoloader.
In Ihrem Komponist.json fügen Sie den folgenden in Ihre autoload Abschnitt:
Dies wird sicherstellen, dass die Datei geladen wird. Nun, was Sie brauchen, ist ein Weg, um diese Klassen verwenden, ohne in Konflikt mit bestehenden Laravel Klassen.
Erstens, stellen Sie sicher, dass Sie eine namespace-Deklaration an der Spitze Ihrer Datei enthalten - sagen namespace Dein\Namespace. Um Konflikte zu vermeiden, müssen Sie explizit sagen, PHP welche Klasse du meinst, wenn Sie den Verweis in den code. Sie haben erwähnt, enthält die Datei eine Antwort Klasse, die gibt es auch in Laravel. Um der Lage sein, beide zu verwenden, müssen Sie den alias einer von Ihnen:
Nun in Ihrem code finden Sie in Laravel die Reaktion der Klasse als LaravelResponse, und auf Ihre Antwort, indem Sie einfach Antwort.
Speicherort der Datei ist irrelevant, solange es in einem zugänglichen Ordner auf Laravel und seine patch Hinzugefügt Komponist.json.
Beachten Sie, dass die Speicherung mehrere Klassen pro Datei ist entmutigt, als eine schlechte Praxis ist. Ich empfehle, dass Sie teilen Sie Ihre Geldstrafe in separate Datei pro Klasse + eine zusätzliche Datei mit den globalen Funktionen.
Einen alias
Ex.
Aliasing/Importieren
einen alias für @user2504370 vorgeschlagen,
hinzufügen der Komponist:
und führen
BEARBEITEN:
es war ein Tippfehler in der classmap. Ich wollte Ihnen nur sagen, Sie können Ihre Datei, wenn Sie wollen, zum Beispiel, können Sie einen neuen Ordner erstellen 'place_with_your_file', die nicht unbedingt im inneren Laravel Ordner.
Verwende ich es mit meiner externen Bibliotheken.
Für PSR-4: wenn Sie namespaces verwenden, dann registrieren Sie die base-namespace und den Ordner, in dem gefunden werden kann:
Beispiel:
"Utilities\\": "../utilities/app"
oder je nachdem, was Ihr Weg ist.
und für classmap, müssen Sie include-Pfad zu diesem Ordner:
und die autoload wird in etwa so Aussehen:
Danke allen für die Bemühungen bei dem Versuch mein problem zu lösen, aber keine Lösung hat bei mir so, hier ist, was ich versucht habe für mein problem
Unten ist die Struktur meiner php-Datei, ich wollte includes/Integration
Dem wichtigsten problem, das ich konfrontiert war, ist der name der Klasse
Response
war in Konflikt mit LaravelResponse
Klasse, so dass ich nur entfernt alle Klassen aus der Datei aus und bewegt werden, um Ihre individuellen Dateien in einen neuen Ordner inLaravel\App
Ordner und namespaces Hinzugefügt, die von allen Klassen.Dann zog ich alle Funktionen in eine PHP-Datei in
laravel\App
Verzeichnisund verwendet Klassennamen zusammen mit dem Namensraum definiert und da zog ich alle Funktionen in einem anderen PHP-Datei konnte ich problemlos aufrufen der Funktionen
so, hier ist meine Letzte Ordner-Struktur von Laravel
Laravel