Controller-übergreifender Zugriff auf Controller-Methoden in Laravel 5
In Laravel 5 kann der Zugriff auf eine Methode von einem anderen Controller aus erforderlich sein, wenn komplexe Anwendungen erstellt werden. Hier sind mehrere Ansätze, um dies zu erreichen:
Direkter Aufruf
Dieser Ansatz ruft die Controller-Methode direkt mit der folgenden Syntax auf:
<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
While Wenn dies funktioniert, kann dies zu einer schlechten Codeorganisation führen.
Erweitern des Controllers
Eine weitere Option besteht darin, den PrintReportController zu erweitern, sodass der SubmitPerformanceController seine Methoden erben kann. Allerdings erbt dieser Ansatz auch alle anderen Methoden vom übergeordneten Controller, was möglicherweise nicht ideal ist.
Traits nutzen
Die empfohlene Lösung besteht darin, ein Trait in der App zu erstellen /Traits-Verzeichnis. Merkmale bieten eine Möglichkeit, gemeinsame Funktionen ohne Vererbung auf mehreren Controllern zu teilen. Hier ist ein Beispiel:
PrintReport Trait
<code class="php">trait PrintReport { public function getPrintReport() { // Implement the logic for generating the report } }</code>
Traits auf Controller anwenden
Fügen Sie die use PrintReport-Anweisung zum hinzu Controller, die Zugriff auf das Merkmal benötigen:
<code class="php">class PrintReportController extends Controller { use PrintReport; } class SubmitPerformanceController extends Controller { use PrintReport; }</code>
Durch die Verwendung von Merkmalen können beide Controller die getPrintReport-Methode direkt über $this->getPrintReport() nutzen. Alternativ kann diese Methode als Route für den direkten Zugriff abgebildet werden.
Die Verwendung von Merkmalen fördert die Wiederverwendung von Code, die Organisation und die Flexibilität bei der Entwicklung von Laravel-Anwendungen.
Das obige ist der detaillierte Inhalt vonWie greife ich in Laravel 5 Controller-übergreifend auf Controller-Methoden zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!