Fabien Potencier Blog: Erstellen Sie Ihre eigenen Rahmen … auf der Oberseite des Symfony2 Komponenten (Teil 6)

In der zum Erstellen eines benutzerdefinierten Rahmen auf der Oberseite des Symfony2 Komponenten, Fabien Potencier schaut, wie die vorherigen Beispiele durch das Austauschen der mehr prozedurale Controller mit tatsächlichen Klassen zu verbessern.

Der Umzug ist ziemlich einfach und macht sehr viel Sinn, sobald man mehr Seiten zu erstellen, aber Sie können einen nicht wünschenswerten Nebeneffekt bemerkt haben … Die LeapYearController Klasse ist immer instanziiert, auch wenn die angeforderte URL nicht mit der leap_year Route. Dies ist für einen Hauptgrund schlecht: Leistung klug, alle Controller für alle Strecken muss nun für jede Anforderung instanziiert werden. Es wäre besser, wenn Steuerungen waren faul-geladen, so dass nur die Steuerung mit den passenden Route zugeordnet wird instanziiert.

Um das Problem zu lösen, nutzt er die HttpKernel Komponente und ihrer „Controller Resolver“, um herauszufinden, wie man den Controller aufrufen und ihm die Parameter, sondern nur bei Bedarf. Ein Resolver-Objekt erstellt wird und dass wird verwendet, um die Controller-Objekt zu instanziieren. Sample „action“ ruft enthalten sind zum Ausfüllen des Basis-Controller (seine „Schaltjahr“ zB) und die volle resultierende Code ist sowohl für den Rahmen und die neuen objektorientierten Controller enthalten.

PHPDeveloper.org

Schreibe einen Kommentar