Ho familiarità con OOP e PHP, ma sono nuovo per i framework MVC. Attualmente sto usando Laravel e l'ho trovato meraviglioso finora, ma le cose sono diventate più complicate man mano che progredisco, e ora capisco che ho bisogno di ripensare la mia architettura.
Il progetto è un gestore di risorse digitali per un piccolo cliente, ma voglio ancora assicurarmi che lo stia sviluppando meglio che posso, nonostante le sue dimensioni.
Le relazioni dell'oggetto di base sono:
- UN PROGETTO può avere molte SEZIONI.
- Una SEZIONE può avere molti ASSET.
Sembra abbastanza semplice, giusto?
Ho PROGETTO che funziona bene, usando REST, ma non sono sicuro di come trattare le SEZIONI e i BENI.
Ci sono 6 tipi di sezioni che un progetto può avere UNO di: es. Foto, collegamenti esterni, informazioni, video, ecc.
Alcune sezioni contengono una o più risorse. Ad esempio, una sezione Informazioni può contenere solo un corpo di testo, ma una sezione Foto potrebbe contenere molte foto. Ogni tipo di risorsa ha un diverso insieme di proprietà.
Idee per l'approccio
Se stavo scrivendo questo usando PHP vanilla, probabilmente avrei un oggetto Asset e quindi ho Photo, About, External Link, che Extended Asset.
Più ci ho pensato, più mi sono interrogato se ho anche bisogno di un oggetto Section.
Dato che sto usando MVC, non sono sicuro se dovrei avere un controller e un modello diverso per ogni tipo di risorsa, o se è eccessivo. Forse dovrei avere solo un modello di asset (e un controller di asset) e quindi avere più modelli per ciascuno dei tipi di risorse che estendono quel modello.
Sarebbe molto apprezzata qualsiasi assistenza per contribuire a modellare il mio pensiero verso un buon uso di MVC.
Aggiornamento: altri pensieri
Avendo avuto più tempo per riflettere, saperne di più su MVC e pensare ai commenti fatti da @RobertHarvey, ho iniziato a pensare di più ai Modelli che ho scelto. Vengo a pensare che è davvero dove si trova questa domanda (e la sua soluzione).
Ho iniziato a costruire il sito con un modello per ogni tipo di SECTION e tipo ASSET (ad esempio VideoSection e VideoAsset sono due modelli che ho ora.
Un progetto può avere una sessione video. Una VideoSection può avere molti VideoAssets. Le dita incrociate questo è un buon modo per avvicinarsi a questo.