Mailinglisten-Archive |
Daniel wrote: > ich möchte den code eines projektes bei einigen anderen projeken > wiederverwenden. der unterschied zwischen den projekten besteht > hauptsächlich darin, daß die datenbankfelder anders heißen und > deren anzahl > sich unterscheiden. > ich stand noch nie vor so einem problem und mich würde einfach mal > interessieren, wie ihr sowas am geschicktesten angeht? Hallo Daniel, ich vermeide Inline-SQL wo immer es geht. In den meisten Fällen verwende ich Datensatz-Objekte, die ich per Overloading mit Feldern bestücke. Beim Speichern werden dann SQL Inserts bzw Updates erzeugt, beim Laden halt Selects. Die Anzahl der Felder ist somit schonmal egal, da die Queries on-the-fly erzeugt werden, man muss lediglich die existenten Felder kennen um keine SQL Fehler geworfen zu bekommen. Prinzipiell sollte es recht einfach sein, eine Übersetzungstabelle zu ergänzen, wo das Datensatz-Objekt bestimmte Feldnamen durch Äquivalente ersetzt. API Beispiel: /* DB Objekt */ $db = new sqlDatenbank(); /* Speichern als INSERT */ $user = new dataset($db, DB_TABLE_USERS); $user->username = 'foo'; $user->passwd = 'bar'; $id = $user->save(); /* später laden und UPDATE */ $user = new dataset($db, DB_TABLE_USERS, $id); $user->passwd = 'newbar'; $user->save(); In diesem Beispiel ist die Anzahl der Spalten schonmal egal, und der richtige Platz für die Übersetzungstabelle wären die __get() bzw. __set() Overloading-Methoden des dataset Objekts. Gruss, Andreas -- http://www.ontis.de http://www.andreas-demmer.de
php::bar PHP Wiki - Listenarchive