dedlfix: PHP Oop Datenbank Klasse

Beitrag lesen

Tach!

ERRMODE::EXCEPTION ist auf jeden Fall eine gute Idee.

PDO::ERRMODE_EXCEPTION

Meine Idee wären Subklassen, DB::MySQL, DB::Oracle usw.

Themengebiet ist PHP. Bei der Schreibweise X::Y steht X für eine Klasse, Y für ein Mitglied dieser Klasse. Klassen können in PHP keine Mitglieder anderer Klassen sein. Wenn man kennzeichen möchte, dass DB und MySQL zusammenhängen, kann man das über Namspaces wie in DB\MySQL oder über eine Namenskonvention à la DB_MySQL tun. (Der Unterstrich hat keine syntaktische Bedeutung, ist nur ein anders als die Buchstaben aussehendes Zeichen.)

Wenn man von PDO erben könnte (was ich nicht beurteilen kann) wären für Deine Klassen auch Namen wie PDO::MySQL, PDO::Sybase usw. denkbar.

Nicht in der Syntax. Und ja, man kann von PDO erben, es ist nicht als final gekennzeichnet.

Ich würde mir das mal angucken. Auf jeden Fall ist eine solche Nomenklatur, was den Aufbau von Klassenhierarchien betrifft, eine Sache die sich auch in Perl bewährt hat, siehe CPAN.

Da hat es den Sinn, eine große Bibliothek zu erstellen, die viele verschiedene Themengebiete abdeckt. Das kann man auch in seinen eigenen Projekten so handhaben, aber das lohnt sich erst dann wirklich, wenn das Projekt ein bisschen grüßer geworden ist. Namespaces wären in PHP das Mittel der Wahl für eine hierarchiche Ordnung.

Ansonsten führt ERRMODE::EXCEPTION zwangsläufig zu einer auf Exceptions basierenden Fehlerbehandlung, Stichwort Exception Chaining. D.h., daß Exceptions bis zur Anwendung Deiner Klasse duchgereicht werden und der Anwender das in Sachen Fehlerbehandlung berücksichtigen muss.

"Ein allgemeiner Fehler ist aufgetreten." Da weiß man ja sofort, was die Ursache ist. - Exception chaining kann man machen, finde ich aber absolut unprickelnd, wenn man nur eine generische Exception bekomt und erstmal durch einen Rattenschwanz innerer Exceptions mit nichtssagenden Meldungstexten durchhangeln muss, um an die eigentliche Ursache zu kommen. Wenn man weiter oben sowieso nur eine generelle Exception abfangen kann, dann fängt catch (Exception $e) auch die spezielle.

dedlfix.