Sto scrivendo un'applicazione PHP in cui un blocco / modulo di logica di dominio è soggetto a cambiamenti frequenti e significativi nel tempo.
La complicazione è che l'applicazione deve essere in grado di utilizzare non solo l'ultima versione del modulo, ma qualsiasi versione che ha precedentemente utilizzato, in modo che possa riprodurre i risultati dei dati che quella versione avrebbe apportato.
Vorrei usare una facciata e / o adattatori o simili in modo che il codice principale dell'applicazione possa passare tra le diverse versioni del modulo che usa senza troppi problemi.
Come per il modulo, stavo progettando di utilizzare il namespacing per ogni revisione principale (in cui la logica del dominio produce risultati diversi); duplicazione di tutte le classi in quel modulo logico di dominio. Cioè copia e incolla efficacemente l'intera cosa, incluse le classi all'interno del modulo che non sono state modificate.
Questo è un odore pungente del codice e non riesco a pensare a come aggirarlo, per non parlare di un modo semplice, dato che il modulo potrebbe anche subire una ristrutturazione completa.
Qualche idea?