Wie lade ich Klassen in MVC-ähnlichen Seiten basierend auf hübschen URLs?
Beim Erstellen einer benutzerdefinierten MVC-Website müssen Sie häufig mit dynamischen URLs arbeiten, bei denen der URL-Pfad eine Aktion darstellt, die innerhalb der Anwendung ausgeführt werden soll. Eine häufige Herausforderung besteht darin, verschiedene Teile der URL Controller-Methoden zuzuordnen.
Problem
Um die Kategorien im Blog-Controller dynamisch zu erweitern, können Sie die folgenden Schritte verwenden:
-
Regular verwenden Ausdrücke Parsen von URLs : URLs können analysiert werden, indem ein reguläres Ausdrucksmuster definiert und mit der eingehenden URL abgeglichen wird und extrahieren Sie relevante Informationen wie Controller, Methoden und Parameter.
-
Controller-Klassen automatisch laden: Basierend auf dem geparsten Controller-Namen können Sie die Funktion zum automatischen Laden verwenden, um die entsprechende Klassendatei automatisch zu laden. Durch das automatische Laden entfällt die manuelle Arbeit, Controller-Dateien manuell einzubinden.
-
Controller-Methode aufrufen : Sobald die Controller-Klasse geladen ist, kann die entsprechende Controller-Methode mit dem aufgelösten Methodennamen aufgerufen werden. Methoden können Anforderungsparameter verarbeiten und Antworten generieren.
-
Dynamisches Hinzufügen von Controller-Methoden: Das dynamische Hinzufügen von Methoden zu einem Controller ist möglich, wird aber im Allgemeinen nicht empfohlen. Übernehmen Sie stattdessen eine Strategie, bei der die Logik einer Controller-Methode in kleinere, allgemeinere Funktionen oder Module zerlegt wird, die in mehreren Methoden verwendet werden können.
Antwort
Eine Möglichkeit, diese Funktionalität zu implementieren, ist:
// 正则表达式模式匹配 URL 路径
$pattern = '/^(?<controller>\w+)\/(?<method>\w+)\/(?<param>\w+)$/';
// 获取解析结果
$matches = preg_match($pattern, $url, $matches);
// 自动加载控制器类
$class = '\Controller\' . $matches['controller'];
$controller = new $class();
// 调用控制器方法
$controller->{$matches['method']}($matches['param']);
Mit dieser Methode können Sie beliebig viele Kategorien dynamisch kombinieren Dem Blog-Controller hinzugefügt, ohne den Controller selbst zu ändern.
Das obige ist der detaillierte Inhalt vonWie lade ich Klassen in einem MVC-Framework mithilfe hübscher URLs?. 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