hotti: Rückgabewert von new()

Beitrag lesen

Moin ;)

Ein Konstruktor sollte maximal die per Parameter übergebenen Werte in internen Feldern ablegen, mehr nicht. Die Arbeit kommt, wenn das Objekt instanziiert ist, danach durch Aufrufen von Methoden.

In PHP ist der Konstruktor diejenige Methode, welche das Objekt initialisiert. Meine Basisklasse versteht unter Initialisieren das Beleben eines Attributes DBH, dieses Attribut wird vererbt und weitere Attribute wie z.B. Statementhandlers können in abgeleiteten Klassen hinzukommen.

Das sind die Basics und mein täglich Handwerk ;)

Dein Konstruktor stellt anscheinend eine Verbindung zur Datenbank her, welche scheitern kann, und übernimmt auch noch das Fehlerhandling in diesem Fall.

Nicht nur anscheinend ;)

Ohne die vorgesehene globale Variable abzufragen

Das hätten wir doch geklärt: In PHP gibt es keine globale Variable, welche Exceptions beeinhaltet. Und ich werde den Teufel tun, eine solche Variable ins Leben zu rufen ;)

kriegt der Nutzer dieses Objekts also gar nicht mit, dass er es mit einem nicht funktionsfähigen DB-Objekt zu tun hat - außer er ruft danach irgendeine Methode auf, die dann vermutlich scheitern wird, oder seltsame Dinge tun.

In meinem letzten Post schrieb ich, dass die Instanz meiner Klasse _kein_ DB-Objekt ist. PHP new Class gibt mir in jedem Fall ein funktionsfähiges Objekt zurück, auch dann, wenn die DB-Verbindung scheitert. D.h., über dieses Objekt können Methoden aufgerufen werden und in meinem Fall, da ich das Objekt in jedem Fall bekomme, muss ich als Anwender der Klasse diejenige Methode aufrufen, die mir im Falle des Scheiterns der DB-Verbindung mitteilt, woran es gelegen hat.

Btw., dies wurde mir weiter unten in diesem Thread als Empfehlung mitgeteilt, hast Du wahrscheinlich nicht gelesen ;)

Genau das ist aber nüscht Neues, genauso handhabte ich das bis vor Kurzem auch in Perl, aber es geht eben in Perl etwas einfacher und das war der Anlass für mich, ebendiesen Thread aufzumachen.

Klassiker ist, dass PHP, sofern eine MySQL-Connection nicht besteht, implizit bei einem Aufruf von mysql_query() mit dem in der php.ini konfigurierten Standardwerten eine Connection herstellen will.

Das ist mir völlig egal, meine Programme sollen gefälligst das tun, was ich will ;P

Hier ist was zum Gucken, um dich auf den neuesten Stand zu bringen: http://www.youtube.com/playlist?list=PLBDAB2BA83BB6588E

Nüschd Neues.

Viele Grüße,
Horst

--
Ein Programm macht immer was es soll, aber es ist nicht immer das, was der Programmierer will.