Utilizzare un quadro esistente.
Prima di tutto creare un framework da zero rappresenta un enorme investimento in termini di tempo e impegno. Il processo richiede molte prove ed errori, perché stai progettando qualcosa che deve essere sia semplice che potente. Per ogni decisione progettuale dovrete chiedervi come influirà su ogni singolo progetto futuro che sarà costruito sulla vostra struttura.
Penseresti che potresti prendere ogni decisione di progettazione e ponderarla rispetto ai requisiti che avresti per qualsiasi altro progetto software, ma il fatto è che non conosci le tue esigenze. Non puoi conoscerli, perché un framework dovrebbe essere in grado di fare quasi tutto (o avere la possibilità di essere esteso per fare quasi tutto) nel suo dominio. Il futuro progetto a dovrà essere in grado di fare x. Il tuo framework può permetterlo senza trasformarlo in codice spaghetti? E se il progetto b dovesse fare y? Cosa succede se il progetto c ha bisogno di fare z?
Hai previsto tutto?
Ora la normale risposta a questo è che se qualcosa non funziona, lo cambierete solo in futuro. È software, dopo tutto. Tuttavia, un framework non è come una semplice applicazione. Dovrebbe avere un'interfaccia e una volta esposta al software che la utilizzerà, non è possibile cambiarla. Puoi estenderlo, ma non cambiarlo. Quindi ora devi pensare ai metodi deprecating, alle versioni api e alla compatibilità delle versioni. È una serie di problemi completamente nuova da affrontare insieme alla normale manutenzione del framework e alla scrittura di nuove applicazioni.
Poi c'è la documentazione.Hai bisogno di un'API, tutorial, codice di esempio. Una volta che hai costruito il tuo framework, devi occuparti anche di questo. Potresti ignorarlo, ma ti assicuro che alla fine tu stesso dovrai scoprire che metodo hai scritto 6 mesi fa. Cosa restituisce? Cosa succede se si verifica un caso speciale x? Hai scritto tutto questo o hai bisogno di rivedere il codice? E non dirò nemmeno quanto sarà facile per un nuovo membro del team iniziare su una struttura personalizzata la cui documentazione si trova completamente o almeno nella tua testa.
Devi anche riconoscere che, a meno che tu non stia lavorando con i migliori e più brillanti (e abbia un budget da abbinare), non avrai mai l'ampio set di librerie vantate dai framework esistenti. È possibile analizzare, progettare, codificare, testare e eseguire il debug più velocemente di una comunità open source?
Infine dovresti chiederti se sei abbastanza bravo da scrivere un quadro. Ti sei immerso profondamente nel codice di un moderno framework OO PHP5 per scoprire cosa lo rende interessante? E, soprattutto, conosci lo perché lo fa le cose in modo particolare? Tieni presente che qualsiasi errore che fai nel tuo progetto può esplodere nei tuoi mesi da ora in poi e puoi finire per pagare per loro più e più volte.
Per riassumere, consiglierei di seguire un quadro esistente; non significa però che devi sceglierne uno e come questo. Prenditi il tempo che altrimenti dedicheresti allo sviluppo di un nuovo quadro e dedicandolo all'apprendimento di uno esistente. Quindi puoi estenderlo per soddisfare le tue esigenze. Ricorda anche che potrebbero esserci cose che non sarai in grado di fare. Ma ti assicuro che ci sarebbero cose che non potresti nemmeno fare con il tuo framework, quindi non importa molto. Un quadro impone alcune limitazioni. È il prezzo che si paga per essere in grado di sviluppare applicazioni più velocemente.