Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich in Laravel 5 auf Methoden von einem Controller in einem anderen Controller zugreifen?

Wie kann ich in Laravel 5 auf Methoden von einem Controller in einem anderen Controller zugreifen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 02:59:29645Durchsuche

How Can I Access Methods from One Controller in Another Controller in Laravel 5?

Controllerübergreifender Zugriff auf Controller-Methoden in Laravel 5

Bei der Arbeit mit mehreren Controllern in Laravel kann es Situationen geben, in denen Sie von einem Controller innerhalb eines anderen auf eine Methode zugreifen müssen . Dies kann durch verschiedene Techniken erreicht werden, wie unten beschrieben.

Verwendung der App-Fassade

Dieser Ansatz beinhaltet den direkten Zugriff auf die Controller-Methode über die App-Fassade:

<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>

While Dies funktioniert, es wird nicht für Code-Organisationszwecke empfohlen.

Vererbung

Eine andere Möglichkeit besteht darin, den Controller zu erben, der die gewünschte Methode enthält. Wenn beispielsweise SubmitPerformanceController auf die getPrintReport-Methode von PrintReportController zugreifen muss:

<code class="php">class SubmitPerformanceController extends PrintReportController {
    // ...
}</code>

Dieser Ansatz kann jedoch zur Vererbung unnötiger Methoden führen.

Eigenschaften

Eigenschaften sind eine bevorzugte Lösung für die gemeinsame Nutzung gemeinsamer Funktionen zwischen Controllern ohne die Nachteile der Vererbung. So verwenden Sie Eigenschaften:

Erstellen Sie eine Eigenschaft

Definieren Sie eine Eigenschaft in der App/Eigenschaften:

<code class="php">trait PrintReport {

    public function getPrintReport() {
        // ...
    }
}</code>

Fügen Sie die Eigenschaft ein in Controllern

Fügen Sie das Merkmal zu beiden Controllern hinzu:

<code class="php">class PrintReportController extends Controller {
    use PrintReport;
}

class SubmitPerformanceController extends Controller {
    use PrintReport;
}</code>

Mit diesem Ansatz können beide Controller über $this->getPrintReport() auf die getPrintReport-Methode zugreifen.

Zusätzliche Tipps

  • Berücksichtigen Sie den Namensraum des Controllers, auf den Sie zugreifen.
  • Routen können Controller-Methoden direkt aufrufen, wenn sie in „routes.php“ zugeordnet sind.
  • Weitere Informationen zu Merkmalen finden Sie in der offiziellen Dokumentation.

Das obige ist der detaillierte Inhalt vonWie kann ich in Laravel 5 auf Methoden von einem Controller in einem anderen Controller zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn