Heim  >  Artikel  >  PHP-Framework  >  Laravel5 erhält die Controller-Methode

Laravel5 erhält die Controller-Methode

WBOY
WBOYOriginal
2023-05-26 19:18:371018Durchsuche

In Laravel 5 ist das Abrufen von Controller-Methoden ein sehr einfacher und häufig verwendeter Vorgang. In einigen Szenarien müssen wir möglicherweise den Namen der Methode abrufen, die vom aktuellen Controller ausgeführt wird. Wie erhält man also Controller-Methoden in Laravel 5? Als nächstes wollen wir es gemeinsam herausfinden.

1. $route-Objekt

In Laravel 5 speichert das $route-Objekt die Routing-Informationen des aktuell ausgeführten Controllers. Dieses Objekt enthält den angeforderten URI, die Anforderungsmethode, Routing-Parameter usw. Wenn Sie den Methodennamen des aktuellen Controllers abrufen möchten, können Sie ihn über die Methode „getActionName“ des $route-Objekts abrufen.

/**
获取当前控制器方法名称
**/
public function getCurrentMethodName() {
    $route = Route::getCurrentRoute();
    $action = $route->getActionName();
    $fragments = explode('@', $action);
    $method = end($fragments);
    return $method;
}

Im obigen Code rufen wir zuerst das aktuelle Routenobjekt über die Route::getCurrentRoute()-Methode ab und verwenden dann die Methode „getActionName“ des $route-Objekts, um den vollständigen Pfad der aktuellen Controller-Methode abzurufen, z als „AppHttpControllersTestController@index“ . Als nächstes verwenden wir die Funktion explosion(), um den Teil des Methodennamens abzufangen, und verwenden die Funktion end(), um das letzte Element des Arrays abzurufen, das den Methodennamen des Controllers darstellt. Zum Schluss geben Sie einfach den Methodennamen zurück.

2. Reflexion

Zusätzlich zur Verwendung des $route-Objekts können wir Controller-Methoden auch über den PHP-Reflexionsmechanismus erhalten. Der PHP-Reflexionsmechanismus stellt eine Klasse ReflectionClass bereit, mit der klassenbezogene Informationen abgerufen werden können, einschließlich Methoden, Eigenschaften, Konstanten usw. Über ReflectionClass können wir den Methodennamen des aktuellen Controllers abrufen.

/**
获取当前控制器方法名称
**/
public function getCurrentMethodName() {
    $controller = Route::current()->getController();
    $reflection = new ReflectionClass($controller);
    $method = $reflection->getMethod(Route::currentRouteAction());
    return $method->name;
}

Im obigen Code rufen wir zuerst das Instanzobjekt des aktuellen Controllers ab und verwenden dann die ReflectionClass-Klasse, um die Reflexionsinformationen des Instanzobjekts abzurufen. Rufen Sie als Nächstes die aktuell ausgeführte Methode über die Methode getMethod() der Reflektionsinstanz ab. Verwenden Sie abschließend das Namensattribut der Reflexionsmethode, um den Methodennamen abzurufen und zurückzugeben.

Zusammenfassung

Die oben genannten sind die beiden Möglichkeiten, Controller-Methoden in Laravel 5 zu erhalten. Unabhängig davon, welche Methode verwendet wird, erhalten wir eine sehr schnelle und bequeme Bedienmethode, mit der wir die Ausführung des Controllers besser steuern können. Wenn Sie Fragen zur Entwicklung von Laravel 5 haben oder mehr über Laravel 5 erfahren möchten, schauen Sie sich bitte die offizielle Dokumentation oder Tutorials an. Wenn Sie die Entwicklungsfunktionen von Laravel 5 beherrschen, können Sie sich schnell einen Vorteil im Bereich der Webentwicklung verschaffen.

Das obige ist der detaillierte Inhalt vonLaravel5 erhält die Controller-Methode. 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
Vorheriger Artikel:Gleichzeitige Laravel-AnfragenNächster Artikel:Gleichzeitige Laravel-Anfragen