Objekte?

Hi,

ich hab mich mal rangemacht die Objektorientierung unter PHP auzutesten.
Nu hab ich mir auch eine mysql-Klasse gemacht.
Wenn ich ein Objekt erstelle verbindet er sich.
Dann kann er auch all die schönen mysql-Zugriffe der einzelnen Funktionen.
Am Ende des Skriptes will ich das Objekt auflösen.
Wie geht das? Ist das nötig/sinnvoll?

Voher will ich aber noch die DB-Verbindung trennen.
Eine Möglichkeit wär das in eine Funktion zu schreiben und vor dem auflösen auszuführen.
Gibt es eine Möglichkeit. es so in die Klasse zu schreiben das es automatich geschiet?

cu Desian

ich muß zugeben, von objektorientierung in php keine ahnung zu haben, allgemein versteh ich aber a bissl was davon. oob hat in php auch nicht so sonderlich viel sinn.

aber eigentlich sind deine probleme schnell geklärt:

–1--
alle variablen werden am skriptende zerstört, und belegen keinen weiteren speicherplatz. es ist also nicht dringend nötig, ein objekt zu zerstören.
sinnvoll ist es immer, mit den variablen/objekten sauber umzugehen (programmierstil), nötig aber halt nicht.
–2--
die datenbankverbindung wird am ende des skripts ebenfalls automatisch geschlossen (wie mysql.close($db)), außer du nutzt eine persistente connection (pconnect). dann sollts aber auch nicht passieren.
(bei dem punkt bin ich mir aber nicht ganz sicher … mein sysadmin hat mich jedenfalls mal gebeten, die verbindungen zu schließen.)
–3--
so etwas macht man normalerweise mit einem destructor, dem gegenteil eines constructors. schau einfach auf http://www.php.net/manual/de/language.oop.php - konstruktoren werden erklärt, und in den User Contributed Notes schreibt einer was über ein destructor-beispiel.

  • stefan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

implementation eines destructors
in den user-contributed-notes (http://www.php.net/manual/de/language.oop.php) ist folgendes zu finden:

ein objekt zerstörst du genau wie eine variable mit unset(…);

destruktoren

methode 1 - geht leider nicht

function destroy(){
… cleanup code here …
unset $this;
}

das wäre beinahe ein destructor (nicht ganz), jedenfalls ganz sinnvoll. funktioniert aber leider nicht, aufgrund php-interner strukturen. also bleibt dir nichts anderes übrig als:

function destroy(){
… cleanup code here …
}

$objekt_xy->destroy();
unset($objekt_xy);

natürlich kannst du auch eine wrapper-function stc. schreiben:
function destroy($obj,$dest_xyz = null)
{
global $$obj;
$$obj->destroy($dest_xyz);
unset($$obj);
}

destroy(„objekte_xy“,$parameter);

ist aber eigentlich blödsinn.
wie gesagt, objektorientierung in php ist meiner meinung nach nicht so ganz sinnvoll.

Hi,

ist aber eigentlich blödsinn.
wie gesagt, objektorientierung in php ist meiner meinung nach
nicht so ganz sinnvoll.

OK. Das mit dem Sinnvoll bin ich grad am testen. Hab voher auch immer ohne Programmiert.
Danke aber für die Antwort.

cu Desian

http://www.php.net/manual/en/class.pear.php

stellt eine einfache möglichkeit dar, einen pseudo-destructor zu erstellen.