![]() |
Zitat:
Zitat:
Wie realisierst du das Lazy-Loading? Mit der Methode __autoload() von php, oder hast du dir da auch etwas eigenes geschrieben? |
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. |
Was genau macht denn deine Routerklasse?
|
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> 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> 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. |
Also zusammengefasst parst der Router die Permalinks und entscheidet, wie es weiter geht?!
|
So ungefähr, ja.
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 06:46 Uhr. |
Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2021, vBulletin Solutions, Inc.
© Dirk H. 2003 - 2020