2009-05-03 21 views
33

Ho iniziato a scrivere alcune applicazioni in PHP e sto diventando più familiare con la lingua. Qualcuno mi ha parlato di CakePHP e CodeIgniter. Volevo ottenere una migliore comprensione di come questi potrebbero aiutarmi, e se valga la pena passare il tempo per imparare un quadro?Per utilizzare un framework PHP o no?

+0

Questa è una duplicazione, visualizzare qui http://stackoverflow.com/search?q=php+framework –

+0

possibile duplicato di [Quale framework JavaScript (jQuery vs Dojo vs ...)?] (Http: // StackOverflow .com/questions/394601/which-javascript-framework-jquery-vs-dojo-vs) – Johan

risposta

55

Quali sono i vantaggi dell'utilizzo di framework MVC PHP?

Bene, ci sono molti vantaggi nell'utilizzo di framework PHP, vediamo alcuni dei principali vantaggi del loro utilizzo.

  1. Questi framework PHP seguono un modello di progettazione, quindi quando si utilizza un framework è necessario seguire la convenzione di codifica, che rende il codice pulito ed estensibile per scopi futuri.
  2. I framework PHP popolari come CakePHP, CodeIgniter, Zend Framework, Symfony seguono il modello di progettazione MVC (Model View Controller) che separa la business logic dall'interfaccia utente, rendendo anche il codice più pulito ed estendibile.
  3. Come tutti possono immaginare, questi framework contengono molte librerie per semplificare il lavoro. Ad esempio: per convalidare un modulo non devi scrivere tanto codice quanto devi fare nel normale scenario di codifica (senza usare un framework), solo poche righe di codice che chiamano la libreria di solito sono sufficienti per questo.
  4. Mentre si lavora su un progetto di grandi dimensioni in un team, un framework MVC PHP sarà un ottimo strumento di sviluppo in quanto è possibile assegnare uno sviluppatore per sviluppare una parte di un modulo per uno sviluppatore e l'integrazione sarà abbastanza semplice con questi moduli sviluppati al livello finale.
  5. Questi framework MVC ti aiutano davvero a sviluppare rapidamente il progetto, se conosci bene un framework, non ti preoccuperai mai della scadenza del progetto.
  6. La maggior parte di questi framework MVC utilizza un chiaro approccio url per rendere il tuo progetto web SEO friendly.

controllo article

+7

Oltre al punto 3, tutti i punti elenco possono essere ugualmente raggiunti senza struttura. – Jacco

+52

puoi raggiungere a piedi la tua destinazione, arriverete lì ma preferisco usare la mia auto – Sadegh

+13

Non proprio - non a meno che non scriviate il vostro framework MVC, che è ancora un framework. E anche se potessi implementare il pattern MVC senza un framework (tuo o altro), perché vorresti farlo? A meno che tu non stia semplicemente provando lo sviluppo web di PHP e non toccherà mai PHP dopo questo progetto, vorrai essere in grado di riutilizzare gran parte del tuo codice, come routing, ORM, gestione delle sessioni, sicurezza, ecc. Potresti essere in grado di realizzare un dipinto senza un pennello, ma ciò non significa che l'utilizzo degli strumenti giusti per il lavoro non abbia i suoi benefici. – Calvin

35

La mia filosofia è che si dovrebbe usare qualcosa solo quando risolve un bisogno che si ha attualmente.

C'è una tendenza reale, in particolare in questo ambito, a usare semplicemente una struttura per il gusto di usarne una o perché si sente che si dovrebbe usare qualcosa. Scoraggio tali pratiche Anche i framework penso che abbiano più valore quando hai fatto le cose nel modo più duro, così hai una buona comprensione di quali problemi hai e di come il framework può aiutarti a in quella situazione. La scelta della struttura dipende dalla situazione.

Detto questo, il pattern MVC con le applicazioni Web è utile, quindi sicuramente non ti farebbe male imparare almeno uno. Mi attengo comunque a un quadro abbastanza minimalista. Mi viene in mente CodeIgniter qui.

Infine, l'altro pericolo con i framework è che possono essere così invasivi che non stai più facendo PHP, stai facendo CakePHP, Symfony o qualsiasi altra cosa. Questo non è necessariamente un problema, ma il pericolo di essere così invasivo è che non si ottiene una buona base in PHP e se mai si vorrà cambiarlo sarà semplicemente troppo difficile che non sarete mai in grado di farlo.

+3

Sono d'accordo. Usare un framework è buono, ma usarne uno basato su semplici standard PHP e HTTP, come Zend Framework. CakePHP potrebbe essere veloce se vuoi sviluppare una semplice app, ma è orribile se vuoi qualcosa di immediato. È il modo di passare i parametri nell'URL (/ my/page/foo: bar/this: that) ti fa pensare al vecchio modo (? Foo = bar & this = that) è cattivo, ma non lo è. –

+0

Sono assolutamente d'accordo sulla tua opinione. Condivido la stessa filosofia della tua. Vedo persone che possono solo codificare in un gergo quadro di una lingua. Se lui/lei lascia il quadro e i file di configurazione, alzi la mano. Io personalmente cerco di non usare alcun framework per cose semplici e minimali che posso ancora ipotizzare cosa succede dentro se devo usarne uno. E uno complesso solo se ho bisogno di fare qualcosa di molto standard e mi aspetto che non succeda nulla di strano e lo voglio davvero veloce. – ttchong

+0

@BartvanHeukelom Aggiornamento relativo ai parametri con nome CakePHP, 'I parametri nominati sono stati rimossi in 3.0. I parametri nominati sono stati aggiunti in 1.2.0 come una versione "carina" dei parametri della stringa di query. Mentre il vantaggio visivo è discutibile, i problemi denominati parametri creati non lo sono. " [link] (http://book.cakephp.org/3.0/en/appendices/3-0-migration-guide.html#routing) –

7

Uno dei grandi vantaggi di framework PHP sono da minimizzare reinventare la ruota in un gran numero di esigenze applicative comuni web. I problemi di sicurezza, la gestione elegante delle eccezioni, gli URL RESTful e la riusabilità del codice sul tuo sito sono considerazioni abbastanza universali.

Potrebbe essere più facile familiarizzare con gli strumenti di un framework e quindi verificare se si desidera utilizzare il sistema MVC completo supportato. A tal fine, suggerirei di familiarizzare con Zend Framework. ZF funziona come una libreria di classi che possono essere implementate individualmente per usi particolari, qualsiasi cosa, dalla sicurezza alla ricerca di Lucene, ma contiene classi che, se utilizzate insieme, implementano un paradigma MVC completamente aggiornato.

5

Penso che sia indubbiamente un buon investimento per passare il tempo ad imparare un framework PHP. Per uno, ti insegnerà come qualcuno ha affrontato il problema dell'architettura del framework, come organizzare il tuo codice PHP e come gestire cose come sessioni e accessi al database ... ecc ...

Per il più parte, se sei seriamente interessato allo sviluppo di applicazioni web, dovrai utilizzare un framework di qualche tipo piuttosto che scrivere il tuo framework da zero.

Alcuni motivi per cui non si dovrebbe scrivere il proprio quadro:

  1. Stai re-inventare la ruota, quando è stato fatto più volte già.
  2. Non è molto probabile che tu faccia un lavoro migliore di un framework open-source, che è stato testato e iterato da molti sviluppatori.
  3. Trascorrerai tutto il tuo tempo scrivendo e eseguendo il debug del tuo framework rispetto a quello che utilizzerai per creare la tua applicazione.

Quindi sì, impara un paio di strutture e trova quello che fa per te il meglio!

+0

Buoni punti. Inoltre, aggiungo che invece di far girare il tuo, sarebbe più produttivo semplicemente contribuire a una delle miriadi di framework disponibili. Invece di 1000 sviluppatori ognuno costruendo separatamente il proprio framework, reinventando la ruota ogni volta, è molto più preferibile che si riuniscano e lavorino insieme su un unico framework. – Calvin

+2

Tuttavia, è necessario crearne uno se non si è soddisfatti di quelli attuali (come me). Oh, ed è divertente: P –

5

Diclaimer: NON sono un programmatore php e non ho MAI scritto un'applicazione php. D'altra parte, ho installato, personalizzato e utilizzato un sacco di php cms per il mio sito e carrelli della spesa.

A mio parere php soffre di seri problemi. Il più grande è che "quadro" sembra essere una parola straniera per quasi tutti i progetti grandi e anche di successo. Il codice php tende a diventare rapidamente insalata di spaghetti: spaghetti html mescolati con spaghetti code e spaghetti sql.

osCommerce, uno dei negozi di maggior successo di sempre, è per lo più non stampabile. Ciò vale anche per la grande maggioranza dei progetti di php.

Se si deve utilizzare un framework per il progetto, io dico di sì! Decisamente! Non importa quanto grande è il tuo progetto, l'utilizzo di un framework web ti aiuta a riordinare e scrivere codice maintable.

Influisce anche sul tuo stile di programmazione anche quando non si utilizza un framework.

2

L'utilizzo di MVC-framework renderà più facile lo sviluppo. Soprattutto applicazioni legate al database. Fornisce una struttura di cartelle cristallina e un sacco di librerie di codici. Ti suggerirei di iniziare da CodeIgniter.

6

voglio solo raccontare la mia esperienza nella programmazione, Sono ancora novizio se

  1. prima utilizzando framework si abitua al loro stile di codifica/regola, che è buono perché la maggior parte del framework sono profondamente pensati su come scrivono il loro codice.in breve ottengo uno stile migliore e un codice più pulito
  2. Di solito il framework include molti arsenali (plugin e/o libreria), che puoi trovare su internet, questo ridurrebbe il tuo tempo di programmazione, riducendo i tempi sprecati. In breve, puoi dedicare tempo prezioso al processo aziendale
  3. con l'utilizzo di framework open source, c'è un altro programmatore che conosce già e probabilmente ha padroneggiato il framework, quindi puoi facilmente collaborare con altri.
  4. in verità non sono un programmatore ben organizzato, ma prima di utilizzare un framework open source. forse come me ti diventi più organizzato

Questo è tutto ciò che posso condividere con te per ora, non sto bene con la scrittura in inglese, mi dispiace per quello. ma il punto è che ti consiglio di usare il framework

Felice amico di programmazione.

+0

buoni punti per i "noobs", specialmente se si prenderanno il tempo per capire perché qualcosa è stato scritto in un modo particolare. – dogmatic69

1

I framework sono grandi quando hai un team di sviluppatori che lavorano allo stesso progetto. Il controller MVC integra magnificamente il programmatore + programmatore. Tuttavia, la creazione di elementi tipo "quadro" e "reinventare" la ruota non è una cattiva idea. Se stai lavorando su un grande progetto, è meglio sporcarsi e sporcarsi con il tuo codice e personalizzare TUTTO per soddisfare le tue esigenze. Diventerà un prodotto più forte in quanto sarà sviluppato interamente per il progetto.

+0

È possibile personalizzare i framework adatti alle proprie esigenze. Non c'è bisogno di personalizzare TUTTO. come reinventare linux o usare quello esistente che potresti estendere, come altri hanno fatto in passato. Non reinventare cose che non devi reinventare. –

1

Il seguente post è in risposta a un thread che è stato immediatamente chiuso mentre stavo scrivendo la mia risposta al post di RenderIn: https://stackoverflow.com/questions/3265509/what-are-the-benefits-of-using-a-programming-framework. Il thread è stato chiuso e nei commenti è stato inserito un link che lo indirizza a qui, quindi cercherò di rispondere alla sua domanda qui. Tra virgolette sotto è quello che stavo PER INVIARE di inviare:

"Consentitemi di raccomandare Joomla! A voi e alla vostra organizzazione.Il mio ultimo datore di lavoro, ho dovuto prendere PHP (non avendo precedenti esperienze con esso), e dopo circa un mese e mezzo di fare un manuale di codifica manuale di PHP, sono stato incaricato di codificare un componente di Joomla !, che avrebbe reso i video agli utenti. Inoltre, dovevo creare un back-end che consentisse agli amministratori non tecnologici di categorizzare, modificare, cancellare, ecc. i video e fornire miniature per loro, ecc.

Ora per ottenere un prototipo funzionante per quello, ci sono voluti circa due mesi (ero uno stagista al momento e funzionava solo 20-24 ore settimanali, quindi se hai un bel po 'di esperienza in PHP oltre all'esperienza con la metodologia di sviluppo MVC, probabilmente c avrei potuto ottenere un prototipo funzionante molto più veloce di me. "

Ora in risposta all'OP di questa discussione: Trascorrere del tempo per imparare un framework è sicuramente utile (non l'ho visto menzionato qui fino al mio post quindi lo ripeto: per un PHP- quadro raccomanderei Joomla!).

Alcuni dei vantaggi di apprendimento di un quadro (un open-source uno come Joomla!):

  • una grande comunità di persone che possono rispondere alle vostre domande (oltre a StackOverflow; lol)
  • Accesso a TUTTO il codice sorgente, così puoi personalizzarlo come vuoi.
  • Un sacco di plugin di terze parti gratuiti (e a pagamento) per migliorare la funzionalità.
  • Un sacco di tutorial.
  • I framework si occupano di eseguire automaticamente molte attività banali.

In riferimento al punto quattro: Joomla!si prende cura di cose per te come la gestione delle connessioni del database e così via che non devi preoccuparti di creare tutte le tue funzioni personalizzate per connettersi al tuo database MySQL o restituire diversi tipi di risultati del database (es. un record, primo risultato del primo registrazione, elenco di record, ecc.), si mettono semplicemente le chiamate al proprio. L'API di Joomla! È apertamente disponibile sul Web sul loro sito: http://api.joomla.org/

In ogni caso si spera che questo aiuti RenderIn e chiunque altro si chieda dei framework (specialmente quelli relativi a PHP).

1

Un framework per me è un buon strumento per accelerare e risparmiare tempo per il gusto di voi semplicemente non volete perdere tempo per rifarlo, non perché volete risparmiare tempo che non sapere quanto è. Pagherai per questo se lo fai.

Per me quadro è buono se sei già un programmatore esperienza e avete il tocco o sentire che si sa come il quadro più o meno lavorare in basso (solo circa non esattamente) e hanno la fiducia per dire ya se voglio Posso ricreare ordinare come semplificare questo framework. Quindi una struttura è un'auto espressa per te e non ti causerà il dolore se vuoi fare qualcosa per cui la struttura non è pronta o qualcosa di insolito o di altra cosa strana.

Se non lo fai, è meglio provare a risolvere il tuo problema usando il semplice vecchio PHP e passare attraverso il dolore di suonare la lingua al dito, e imparare prima su buona pratica di programmazione e paradigma e schema. Altrimenti sarai uno di quei neolaureati che entreranno a far parte di una grande squadra e il loro primo progetto sta lavorando a un progetto con un framework molto potente che richiede molto meno codifica e più sulla configurazione e l'applicazione di patch. Non sarai mai un buon programmatore e non potrai creare una buona applicazione PHP da zero.

Come far parte di un'organizzazione che utilizza un quadro complesso?

Trascorri un po 'del tuo tempo libero per risolvere il problema in modo semplice in questo caso PHP fino a ottenere il tocco di ciò che ho menzionato sopra. Altrimenti, non troverai mai la tua sicurezza nella programmazione e continuerai a ripetere a te stesso: "So solo che quelli sono i passaggi per farlo". Non è programmazione (un po 'estremo :)).

Complesso vs. semplice quadro

Alcuni del quadro, anche se utilizzato da molti, è solo quello di schiacciante. Ci sono troppi livelli che perderai di vista. Questi framework sono solitamente per qualcosa che è stereotipo, un sacco di file di configurazione e se vuoi fare qualcosa di insolito, fai meglio a essere lo sceneggiatore di framework (un po 'esagerato qui :)). Non voglio menzionare alcun nome qui, ma lo saprai quando lo incontrerai.

0

CodeIgniter è un prodotto del team di EllisLab e il loro prodotto principale è Expression Engine sviluppato con CodeIgniter.

Dopo un po 'di tempo con l'uso di CI ho scoperto che usare Yii Framework è più conveniente. Ha molte estensioni. E non è così difficile da capire con buoni documenti.

CakePHP, penso, vicino a CodeIgniter.

0

Consiglio vivamente di utilizzare un framework per qualcosa di più di un semplice script. A volte può sembrare eccessivo, ma direi che non lo è. Ho avuto alcune occasioni in cui pensavo di non averne bisogno (semplice app, basic CRUD in 3 db tables).

Poco dopo, mi sono trovato a fare mysql_escape_string manuale, filtraggio XSS e così via.Da quel momento in poi, scriverò solo codice non-framework quando penso che il setup richiederà più del codice di lavoro. E ciò accade molto di rado.

Se dovessi raccomandare un framework PHP, dovrei andare con CodeIgniter o Yii Framework, a seconda di quanto sia complesso il tuo progetto.