Moin!
Oder mal anders gefragt, wolltet ihr ein solches Template Beispiel realisieren, welcher der beiden Lösungen (Funktion/Klasse) würdet ihr favoritisieren und _warum_?
Meine Antwort ist da recht simpel: Ich nehmen den Klassenansatz, weil ich die existierende Template-Klasse einsetze. Ich verfüge über keine Template-Engine, die funktionsbasiert ist, also habe ich da gar keine Wahl.
Noch ein Punkt ist aus "Anwendersicht" beim Unterschied zwischen Funktionen und Klassen beachtenswert:
Eine Klasse hat einen Namen, deren instanziierte Objekte sind simple PHP-Variablen, deren Namen man sogar frei benennen kann. Damit erreicht man, dass lediglich der Klassenname eindeutig sein muß, alles andere, insbesondere die Methodennamen der Klasse, stecken dadurch in einem eigenen Namensraum.
Ich muß mich also als die Klasse anwendender Programmierer nur drum kümmern, andere Klassen nicht identisch zu benennen. Aber ich kann problemlos in der Templateklasse eine Methode "check" haben, und in der Mailadressenklasse ebenfalls eine Methode "check".
Hätte ich nur Funktionen zur Verfügung, käme es hier zum Konflikt, und ich müßte mindestens eine der zwei Funktionen umbenennen.
Nicht betrachtet wird hierbei, dass Objektorientiertes Programmieren OOP als Herangehensweise an ein Problem oft gewisse Lösungsmöglichkeiten erlaubt, die technisch einfach und verständlich sind. Selbstverständlich kann man die Probleme auch nur mit Funktionen lösen (die CPU kennt keine Objekte oder Klassen, die kriegt nur Maschinencode - also wird jede OOP sowieso auf den niedrigsten Level übersetzt, den es gibt), es wird aber eventuell komplizierter oder weniger verständlich, oder alle Codeteile werden dadurch ineinander verwoben und schlecht wartbar.
- Sven Rautenberg
"Love your nation - respect the others."