Problem:
In Laravel haben Sie zwei Controller, SubmitPerformanceController und PrintReportController. Sie möchten eine Methode, getPrintReport, von PrintReportController in SubmitPerformanceController aufrufen. Wie können Sie das erreichen?
Antwort:
Es gibt mehrere Ansätze, um in Laravel 5 Controller-übergreifend auf Controller-Methoden zuzugreifen:
Methode 1: Verwenden des app()-Helfers
<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
Dieser Ansatz ruft die PrintReportController-Klasseninstanz ab und führt ihre getPrintReport-Methode direkt aus. Obwohl es funktioniert, wird es aus organisatorischen Gründen nicht empfohlen.
Methode 2: Vererbung
<code class="php">class SubmitPerformanceController extends PrintReportController { // ... }</code>
Durch die Erweiterung von PrintReportController erbt SubmitPerformanceController alle seine Methoden, einschließlich getPrintReport. Allerdings erbt dieser Ansatz auch alle anderen Methoden, die möglicherweise nicht notwendig sind.
Methode 3: Traits
Das Erstellen eines Traits (z. B. App/Traits) wird in Betracht gezogen the最佳做法:`
<code class="php">trait PrintReport { public function getPrintReport() { // ... } } class PrintReportController extends Controller { use PrintReport; } class SubmitPerformanceController extends Controller { use PrintReport; }</code>
Durch die Verwendung von Merkmalen kann SubmitPerformanceController auf die getPrintReport-Methode als Controller-Methode zugreifen (z. B. $this->getPrintReport()). Sowohl SubmitPerformanceController als auch PrintReportController können auf diese Weise auf getPrintReport zugreifen.
Das obige ist der detaillierte Inhalt vonSo greifen Sie auf Controller-Methoden in Laravel 5 zu: Ein Leitfaden zu Methoden und Best Practices. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!