Qual è il metodo migliore per comprendere come e perché un framework è stato scritto come era?Informazioni sui framework
risposta
Sviluppare una funzionalità o correggere un bug. Se si utilizza il framework per lo sviluppo di una soluzione reale, è possibile creare un elenco di carenze da affrontare o funzionalità da aggiungere che renderebbero più semplice il compito.
La correzione di un bug ti aiuterà davvero a capire il codice, perché la maggior parte delle volte ti viene dato un pezzo di codice di esempio che lo ricrea, che poi puoi rintracciare nelle viscere dell'inferno per trovare dove le cose vanno male.
Tutto ciò che serve è la persistenza, davvero.
Quindi visita il bug tracker, scegli uno interessante e affrontarlo? – GeekJock
Sì, questo è il lungo e corto di esso. –
Prendere un componente molto semplice e analizzare il codice. Ad esempio, guarda alcuni dei componenti di Zend Framework (qualcosa di assolutamente semplice come Zend_Version
o, per aumentare un po 'ma mantenerlo semplice, Zend_Debug
). Sceglili e vedi cosa li fa battere. Quindi, prova a scrivere il tuo componente semplice.
Sei sulla strada giusta. Ricorda solo che Roma non fu costruita in un giorno. Ogni casa è costruita su un periodo più lungo, mattone dopo mattone.
Utilizzando un framework, scoprirai alcuni dei suoi difetti e sarai in grado di trovare alcune funzionalità mancanti o che necessitano di miglioramenti.
Iniziare lì, sviluppare il miglioramento e inviarlo alla comunità dei framework per la revisione tra pari. Anche se decidessero di non includere il tuo lavoro nel framework, riceverai un feedback molto prezioso sul tuo lavoro.
Non fermarti qui, usa quello che hai imparato nel tuo primo tentativo di un secondo (e un terzo, quarto, quinto ...) In questo modo imparerai a capire cosa si aspettano gli altri dal framework (che potrebbe differiscono molto dalle tue aspettative) e lentamente comprendono il funzionamento interno del framework stesso.
Conclusione: Sii paziente e perseverante. La comprensione seguirà. (Sembra esoterica, lo so, ma potrebbe funzionare!)
So che il mondo ne ha bisogno un altro come se avesse bisogno di un buco nella testa, ma scrivere il proprio framework è un ottimo modo per imparare una lingua. Ne ho scritto uno abbastanza completo in PHP in meno di due settimane e ho imparato moltissimo su PHP e sullo sviluppo web nel processo.
L'unica ragione per cui non l'ho rilasciato è perché alla fine non ero contento del modo in cui gestiva lo stato di sessione, ma anche quella era una buona esperienza di apprendimento!
Penso che il modo per iniziare la progettazione del framework sia di scrivere circa 5 obiettivi di base.Per me, questi erano:
- finalizzato alla produzione di semplici applicazioni Web con una dozzina di forma
- rivolti a persone con una buona conoscenza di SQL
- nessun codice PHP procedurale o altrimenti (ad eccezione di quelle in SQL SP)
- nessuna programmazione HTML/JavaScript/CSS avuto bisogno di
- applicazione descritta in XML
- lavoro su un PHP vaniglia/Apache pila
- no ma dello stato intenance on server
Questo è stato sufficiente per farmi iniziare.
L'altro suggerimento che posso fare è provare a creare un'app utilizzando il framewark mentre costruisci il framework stesso. Questo rivelerà rapidamente problemi e suggerirà idee per nuove direzioni e caratteristiche.
Ci sono molte cose che la maggior parte dei framework include, sebbene la definizione sia sfocata.
- Fornire un programma di avvio automatico di base (gestione delle impostazioni, l'ambiente di configurazione, il controllo dei problemi di compatibilità tra le versioni di PHP, etc.)
- URL Routing - Come definire regole per le quali il punto a cui le pagine URL.
- Gestione plug-in, librerie, moduli, ecc ORM
- Database - Manipolare oggetti invece di scrivere query SQL (semplificato)
- Templating - di solito comporta la creazione di un mini-language per la logica del modello (cicli, condizionali) per evitare di avere codice PHP nel modello stesso.
Oltre a questo, la maggior parte dei framework include anche una vasta gamma di librerie da semplici e-mail a API di servizi Web avanzati.
mi sento di raccomandare due quadri da guardare:
-
Consiglio questo perché è un quadro "batterie incluse" che funziona out of the box. Ha anche una grande comunità, molte librerie di terze parti. CI ha un po 'di trucchi per far funzionare il framework sia con PHP4 che con PHP5, il che è anche molto utile (perché, per qualche motivo, molte persone usano ancora PHP5). Dovresti anche dare un'occhiata a KohanaPHP, che è un ramo di CodeIgniter che è stato riscritto come un rigido framework PHP5.
-
Zend è un framework basato su moduli. Invece di lasciare tutto in una directory e sfornare le pagine, scegli le parti che ti servono e incollale da solo. Dal momento che Zend è creato dalla gente dietro il motore dietro PHP (ancora confuso?) Usa "l'ultima e la più grande" di PHP5 - tutto è orientato agli oggetti e utilizza il suggerimento del tipo. Codice molto pulito, anche se un po 'prolisso.
penso che la roba essenziale è il programma di avvio automatico (il "collante" per il quadro), e come ogni quadro implementa un sistema per supportare le librerie utente-made e plug-in. Il resto è possibile trovare come applicazioni autonome altrove.
Dopo aver creato molti siti web da zero, mi sono ritrovato a riutilizzare gli stessi script ripetutamente e ho trovato alcune cose tremendamente noiose perché non mi ero mai preoccupato di astrarli prima per riutilizzabilità. Quindi, se hai esperienza nel creare siti web, dovresti avere una buona idea di ciò che dovrebbe includere il tuo framework. In caso contrario, probabilmente inizierei pensando a una struttura di file MVC, per far funzionare il framework prima con le viste, poi con i controller e poi con i modelli. Quindi assicurati che ognuno di questi sia facilmente estendibile perché non importa quanto tu ci provi, ci mancheranno sempre cose ... e poi inizierai a dare uno schiaffo alle utility a tuo piacimento (aiutanti di form, helper di modelli, ecc.). In altre parole, creare un progetto per il quale si desidera utilizzare il framework e creare contemporaneamente framework e sito Web.
Non so se voglio necessariamente scrivere il mio framework ... anche se sembra che avrò molta esperienza nel farlo. – GeekJock
Oops. Sono rimasto coinvolto nelle altre risposte e ho dimenticato che non era il tuo intento: p In ogni caso, ti darebbe una buona idea di dove alcune di queste strutture provengano comunque. Ho iniziato a sviluppare per CakePHP leggendo dapprima la documentazione, costruendo un sito web e poi realizzando ... – mpen
... c'erano alcune lacune nel framework che potevo riempire con alcuni dei miei moduli. Un buon framework supporterà i componenti aggiuntivi (come ho detto) - prova a scaricare un componente aggiuntivo di terze parti e vedere come lo integrano, quindi puoi provare a creare il tuo se vuoi/senti il bisogno. È un po 'meno ... – mpen
si dovrebbe davvero cercare di capire, ad un livello elevato, il ciclo di vita di una richiesta. Ecco un buon esempio di ciò che accade dalla richiesta alla risposta in Zend Framework, http://framework.zend.com/manual/en/zend.controller.basics.html
Non sono d'accordo con la definizione di un framework. È mia convinzione che tu possa avere un quadro logico senza scrivere un singolo frammento di codice quadro o avere qualsiasi astrazione di sorta. Templating? Questo non è il lavoro di un quadro. –
Forse, ma per il gusto di questa discussione possiamo assumere: http://en.wikipedia.org/wiki/Software_framework http://en.wikipedia.org/wiki/Web_application_framework – GeekJock