Mailinglisten-Archive |
Daniel Haller wrote: > Wie stelle ich es nun am besten an, daß ich Methoden meiner > Datenbankklasse auch in den Methoden meiner Userklasse verwenden kann? > Bspw. gibt es in der Klasse User eine Methode, um den DB-Eintrag des > Users zu ändern - dazu brauche ich aber Methoden aus der DB-Klasse. Wie > komme ich geschicktesten da ran? > > Ich hoffe, ihr versteht meine Frage... ;-) Wie würdet ihr das angehen? > Wie löse ich so eine Situation am elegantesten? > > Ich habe bei mir eine zentrale Klasse mit lauter statischen Methoden und Attributen. Unter anderem gibt es dort ein statisches Array, in dem ich mit 3 statischen Methoden (register zum Abspeichern, registry zum holen und isRegistered zum prüfen ob es schon registriert ist.) auf Elemente in diesem Array zugreifen kann. In dieser Klasse bzw. in diesem Array ist alles gespeichert das ich von verschiedenen Orten aus benötige.. Datenbank-Klasse, Authenfikations-Klasse, Konfiguration und noch einiges mehr. Damit kann ich von überall her darauf zugreifen, ohne immer alles übergeben zu müssen, oder mit global zu arbeiten. (global ist meiner Meinung nach schlecht, weil man immer aufpassen muss, unter welcher Variable die Klassen abgelegt wurden, und das nichts aus Versehen überschrieben wird. Wird so ähnlich auch bei Frameworks wie Zend[1] und SolarPHP[2] gemacht. Mit dem &-Zeichen wird eine Variable per Referenz und nicht per Value übergeben. Bei zweiterem wird das komplette Objekt kopiert, beim ersten gibt es das Objekt nach wie vor nur einmal. Diese Syntax ist bei PHP5 nicht mehr nötig, da seither Objekte standardmässig per Referenz übergeben werden, die alte Schreibweise löst jetzt eine E_STRICT-Meldung aus. Bei Array's und anderen Werten wird es aber nach wie vor benötigt. Gruss Sascha [1] http://framework.zend.com/manual/en/zend.register.html [2] http://solarphp.com/index.php/docs/read/Solar/ApiRef
php::bar PHP Wiki - Listenarchive