L'applicazione web su cui lavoro è in diretta da un anno a questa parte, ma è tempo che si evolva e uno dei modi in cui si evolve è in un'applicazione multi-marca, in questo caso diverse aziende che utilizzano il applicazione, diversi modelli / contenuti e alcune lievi modifiche alla logica di business tra di loro.
Il problema che sto affrontando è l'implementazione di una procedura ottimale sul sito in cui vi sono differenze nella logica di business per ogni marchio. Questi saranno per lo più molto superficiali, utilizzando un provider di mailing list alternativo o acquisendo alcuni dati aggiuntivi in un modulo.
Non voglio avere se (brand === x) {...} else {...} in tutto il sito, specialmente perché la maggior parte di ciò che deve essere cambiato può essere gestita estendendo la classe esistente .
Ho pensato a diversi metodi che potrebbero essere usati per istanziare la classe corretta, ma non sono sicuro di quale sarà la migliore, specialmente perché alcuni sembrano portare alla duplicazione di più codice di quanto dovrebbe essere necessario.
Ecco cosa ho considerato:
1) Utilizza un caricatore statico simile a Zend_Loader che può richiedere la classe richiesta e conosce il marchio e può quindi restituire l'oggetto corretto.
$class = App_Loader::getObject('User', $brand);
2) Classi di fabbrica. Li utilizziamo già nell'applicazione per i prodotti, ma potremmo utilizzarli anche qui per fornire un'interfaccia trasparente alla classe.
3) Instradare la richiesta di pagina a un controller di marca specifico. Questo tuttavia sembra duplicare un sacco di codice / logica.
C'è uno schema o qualcos'altro che dovrei prendere in considerazione per risolvere questo problema?
4) Come gestire un progetto in crescita che ha più istanze personalizzate in produzione?
Aggiorna Questa è un'applicazione PHP, quindi le decisioni su quale classe caricare vengono fatte per richiesta. Potrebbero esserci oltre 100 diverse "marche" in esecuzione.