echo $begrüßung;
Bin mir bei der Fehlerbehandlung noch etwas unsicher, ich weiß nicht genau wie ich das ganze handhaben soll. Soll ich user defined exceptions werfen, oder die normalen Meldungen ausgeben oder was ganz anderes?
Exceptions zu werfen ist schon nicht verkehrt[1], nur solltest du den Fehlertext nicht im Hinblick auf die spätere Verwendung formatieren, sondern einfach nur die Informationen bereitstellen. Das In-Form-Bringen ist Aufgabe des catch-Codeteils eines try-catch-Konstrukts.
"Nach meiner Erfahrung ist es besser keine Schnittstelle zu einem DBMS zu implementieren sondern eine zu den Daten."
Hast du mir noch einen Link zu "einer Schnittstelle zu den Daten" wie du es genannt hast. Würde mir gerne noch ein bißchen mehr darüber ansehen.
Ich weiß nicht, ob es dafür einen konkreten Namen oder Beispielimplementationen gibt. Es ist einfach nur meine Erfahrung, die sich aus der Anwendung von Datenbankabstraktionsschichten und objektorienten Interfaces zu Datenbanktabellen bisher ergab. Mit Tabelleninterfaces[2] lassen sich zwar Standard-Aufgaben schnell implementieren, doch sobald man Verknüpfungen zu anderen Tabellen braucht, oder auch berechnete Spalten oder Funktionen verwenden möchte, fangen die Verrenkungen an.[3]
Meine "Datenschnittstelle" ist im Prinzip einfach nur eine Konzentration des Daten abfragenden und speichernden Codes in einem oder mehreren Objekten. Er liegt also an einer definierten Stelle und kann im eher unwahrscheinlichen Fall eines DBMS-Wechsels an die neuen Gegebenheiten angepasst werden. Die Schnittstelle zur Anwendungslogik kann je nach Bedarf so gestaltet sein, dass sie einzelne Werte oder eine Ansammlung (Array) übergibt.[4] In Richtung DBMS habe ich mehr oder weniger nur ein einfaches RUDI-Interface unter meiner "Datenschnittstelle" liegen. Die notwendigen SQL-Statements sind in meiner Schicht notiert oder werden da "endmontiert". Zu sehen gibt es das aber nicht öffentlich.[5]
[1] In welchen Fällen eine Exception das richtige Mittel ist und wann nicht wird in Fachkreisen unterschiedlich bewertet. Doch das will ich nicht weiter vertiefen.
[2] beispielsweise Zend_Db_Table aus dem Zend Framework
[3] Diese Aufgaben sollte man vermutlich besser der Datenbank und einer View überlassen.
[4] Mit Hilfe der SPL kann man statt des ressourcenaufwendigen Erstellens eines Arrays einen Iterator implementieren, der sich zwar wie ein Array mit foreach durchlaufen lässt, den sonst in den Array-Elementen enthaltenen Wert aber erst zur Abfragezeit ermittelt (z.b. Fetchen aus einer Ergebnismenge).
[5] Dafür ist es mir einfach nicht sauber genug implementiert und weicht auch noch von Anwendung zu Anwendung erheblich voneinander ab - muss ja, jeder Anwendungsfall hat ja seine eigenen Anforderungen.
echo "$verabschiedung $name";