Ok meine Frage hier kommen, ich habe eine Datenbank mit einem solchen SchemaDRY: Ratschläge, wie man Code nicht dupliziert?
+-------------+ +------------+ +-----------+
+ Object + + car + + computer +
+-------------+ +------------+ +-----------+
+ id + + object_id + + object_id +
+ some_col + + max_speed + + CPU_speed +
+ type + + n_gears + + memory +
+-------------+ +------------+ +-----------+
So, wenn die Eingabe zum Beispiel ein Computer die Benutzer zusammenfassen, ich habe einen Objektdatensatz erstellen, die alle gemeinsam genutzten Felder in sie speichern und ich erstellen Computer-Datensatz mit allen spezifischen Daten für Computer gespeichert werden.
So weit so gut, hier kommt mein Problem, so dass ich jede Aktion (und Controller-Methoden-Ansicht für jeden Objekttyp) duplizieren müsste. So jetzt in meinem Controller, ich habe diese Aktionen:
+ new-car
+ new-computer
+ show-car
+ show-computer
+ edit-car
+ edit-computer
+ list-car
+ list-computer
Also für jeden Typen I im Grunde der gesamten Code kopieren und ändern Sie einige Zeilen von Codes (dh das Auto Mapper durch Computer-Mapper zu ersetzen, gleiche gilt für Datensatzobjekt) . Ich muss die Anwendung erwähnen Sie das Zend-Framework und ist in PHP.
Ich möchte etwas mehr tun "Wiederhole dich nicht" und muss nicht den ganzen Code kopieren. Irgendeine Idee, wie man es eleganter macht?
{neu, anzeigen, bearbeiten, list} -Objekt, wo das Objekt von der Umgebung bestimmt wird, z. B. Verzeichnispfad, ODER übergeben Sie es als Parameter für die Methode – ajreal
@AJreal das sind Controller-Aktionen, frage ich mich, ob tatsächlich Ich würde besser eine private Methode zu meinem Controller machen und versuchen, irgendeine Art von Template-Funktion zu machen, indem ich PHP magics zB $ className = 'Application_Model_' benutze. $ Objekttyp; $ o = new $ className(); – RageZ