Sponsored Links |
|
||||
Zitat:
Ein einfaches Beispiel (ohne zusätzliche Config) könnte sein: PHP-Code:
So sind sämtliche Klassen schonmal änderbar, ohne dass man die Objekte im Vorfeld erstellen muss, nur bei zusätzlicher Config. |
Sponsored Links |
|
||||
Der Router ermittelt den Controller und die Action, welche aufgerufen werden soll anhand eines Strings.
Ich verwende dazu im Frontcontroller die RequestUri, aber man könnte auch einen GET-Parameter verwenden oder sonstwas. Routen können dann z.B. so aussehen: Code:
<auth> <route>/:action/*</route> <defaults> <controller>auth</controller> <action>login</action> </defaults> <regex> <action>login|logout</action> </regex> </auth> Die Route wird in einen regulären Ausdruck übersetzt und geprüft, ob dieser Ausdruck auf den String passt, dann werden anhand dessen die Variablen (hier nur action) und Übergabe-Parameter (alles was auf * passt) bestimmt und ggfs. die Defaults gesetzt. Anschließend werden noch die Variablen gegen die Ausdrücke in "regex" geprüft, wenn alles stimmt, wird die Route verwendet. Hier wird die Action auf "login" und "logout" beschränkt, die Route passt also nur für Anfragen der Form "/login", "/login/*", "/logout", "/logout/*". Der angegebene Controller-Name ist ein eindeutiger Schlüssel für den Controller. Die Config vom Controller sieht dann so aus: Code:
<controllers> <auth> <class>Auth_Controller</class> <loginRedirectUrl>/admin</loginRedirectUrl> </auth> </controllers> Man kann aber auch einen anderen Auth-Controller schreiben und diesen so ziemlich simpel in der Config ändern. Die ganze Config scheint aufwendig zu sein, aber bei manchen Frameworks ist das so, dass diese einfach ein festes URI-Schema verwenden, was dann so ähnlich aussieht wie: /<controller>/<action>/<params>. Wobei der default von <controller> und <action> meistens auf "index" gesetzt wird und die Parameter natürlich optional sind. Das bedeutet aber, dass die URIs quasi fest vorgegeben sind, die Controller müssen also entsprechend den gewünschten URIs benannt werden. Und genau dafür ist der Router da. |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Ausgabe geschieht nur einmal | Benutzername | Serveradministration und serverseitige Scripte | 0 | 12.05.2011 15:59 |
wo ist OOP für php sinnvoll? | sqrack | Serveradministration und serverseitige Scripte | 5 | 12.09.2010 16:23 |
PHP OOP: Datenbankeintrag Klasse - ein paar theoretische Überlegungen | braindead | Serveradministration und serverseitige Scripte | 17 | 24.07.2009 06:29 |
PHP: zweidim. Array mit eindimensionaler Struktur in Eindim. Array umwandeln? | braindead | Serveradministration und serverseitige Scripte | 4 | 08.07.2008 13:31 |
Dateien auslagern - Include und PHP | ArcVieh | Serveradministration und serverseitige Scripte | 17 | 27.03.2008 18:09 |