Weblog - kronn.de

MVC im PHP-Alltag und Optimierung

Ein System, das Inhalte verwalten kann, muss noch lange nicht selbst damit umgehen können. Solche Funktionen können später hinzugefügt werden.

Mein derzeitiger Ansatz, mein CMS umzusetzen ist daher erstmal recht angenehm. Grundsätzlich kann das CMS zwar ein paar Sachen, nur eben mit Inhalten umgehen kann es nicht. Es besteht aus ein paar Klassen, die mir solche Basisfunktionalitäten wie Analyse der URL, Datenzugriff, Darstellung der Daten usw. ermöglichen.

Die tatsächlichen Strukturen sind dabei noch gar nicht festgelegt. Bislang ist es nur ein objektorientierte Rahmen, der auf dem MVC-Designprinzip basiert. Alle konkreten Funktionen werden in diesen Rahmen eingebunden.

Inspiriert wurde mein Vorgehen vom Erfolg, den „RubyOnRails“:http://www.rubyonrails.com/ derzeit feiert. Dabei habe ich mich kurz umgeschaut und dann meine Verzeichnisstruktur nach der von RoR ausgelegt. Prinzipiell mag das in Ordnung sein, tatsächlich dann aber eben doch nicht. Jedes Modul besteht aus einer Controllerklasse, einer Modelklasse und ein paar View-Dateien.

h3. Struktur

Ich habe die Begriffe anfangs nur übernommen ohne sie zu verstehen. Meine jetzige Aufteilung auf die entsprechenden Klassen ist für mich logisch, kann jedoch vom ursprünglichen Konzept abweichen.

Der Controller enthält größtenteils Steuerinformationen, gegliedert nach Aktionen wie view, edit und delete. Die model-Klasse ist für mich ein Container für die Templatetags wie get_title, get_content usw.

Da nun jedes Modul auf jeden Fall genau einen Controller und ein Model beinhaltet ist es jedoch eher kontraproduktiv, ein Modul auf

* drei Verzeichnisse und
* zwei Steuerdateien

zu verteilen.

Je ein Verzeichnis enthielt die Controller- und die Model-Dateien. Das dritte Verzeichnis enthält die View-Dateien, aus denen dann die tastächliche HTML-Seite zusammengesetzt wird. Konkret habe ich ein oder zwei Haupttemplates und mehrere Untertemplates, für jede Aktion eines.

h3. Optimierung

Bei Seitenraufrufen sucht das PHP-Skript immer nach verfügbaren Modulen und bindet die entsprechenden Dateien per „require_once“:http://php.net/require_once ein.

bq. Jeder @include@ kostet Zeit…

Naja, hier kann man dann Zeit und Ressourcen sparen. Durch eine Zusammenfassung aller Klassen eines Moduls in einer Datei wird eine von zwei Schleifen überflüssig. Zwei Schleifen? Ja, ich habe einmal nach Controllern und einmal nach Model-Klassen gesucht. Danach habe ich jede gefundene Datei eingebunden.

Eine der beiden Schleifen ist jetzt wegfallen. Das Datenvolumen wird in etwa gleich bleiben, aber die Dateisystemzugriffe gehen ziemlich zurück. Der beste Weg eine Schleife zu optimieren ist wohl immer noch, sie einfach überflüssig zu machen und zu löschen.

Abgelegt in: Code
Veröffentlicht am 10.09.2005 um 17:02
Dauerhafter Link zu "MVC im PHP-Alltag und Optimierung"

Diese Internetseite wurde von Wordpress zusammenebastelt und besteht aus geprüftem XHTML und CSS.
Das hat viele Vorteile.

Weitere Seiten mit ähnlichen Vorteilen preisen gutes Webdesign an oder enthalten Texte.
So ist das Leben eben.
© Kronn/2003-2005

Mein Server hat, nebenbei gesagt, 0,265 Sekunden benötigt, das hier zu fabrizieren.
War aber nicht böse gemeint.


Fatal error: Uncaught Error: Call to undefined function set_magic_quotes_runtime() in /var/www/K1054131198/docroot/kronn.de/etc/counter/counter.php:61 Stack trace: #0 /var/www/K1054131198/docroot/kronn.de/weblog/wp-content/themes/kronn/footer.php(19): include() #1 /var/www/K1054131198/docroot/kronn.de/weblog/wp-includes/template.php(688): require_once('/var/www/K10541...') #2 /var/www/K1054131198/docroot/kronn.de/weblog/wp-includes/template.php(647): load_template('/var/www/K10541...', true) #3 /var/www/K1054131198/docroot/kronn.de/weblog/wp-includes/general-template.php(76): locate_template(Array, true) #4 /var/www/K1054131198/docroot/kronn.de/weblog/wp-content/themes/kronn/single.php(31): get_footer() #5 /var/www/K1054131198/docroot/kronn.de/weblog/wp-includes/template-loader.php(74): include('/var/www/K10541...') #6 /var/www/K1054131198/docroot/kronn.de/weblog/wp-blog-header.php(19): require_once('/var/www/K10541...') #7 /var/www/K1054131198/docroot/kronn.de/weblog/index.php(17): require('/var/www/K10541...') #8 {main} in /var/www/K1054131198/docroot/kronn.de/etc/counter/counter.php on line 61