2012-06-29 17 views
34

Mi piacerebbe provare Silex ma ho alcune domande.La differenza tra Symfony e Silex

So usare Symfony2 e mi piacerebbe sapere se Silex è molto diverso da Symfony o è la stessa cosa (stessa operazione, stesso codice ...)?

Inoltre, Silex è consigliato per piccoli progetti PHP e Symfony per progetti di medie o grandi dimensioni, è vero?

risposta

45

Poche cose degne di nota:

  • Silex si basa su componenti di Symfony2, proprio come il framework Symfony2 è. In quanto tale, può essere considerata un'interfaccia utente alternativa ai componenti (l'utente è uno sviluppatore web).
  • Poiché utilizzano la stessa base, la migrazione tra di loro dovrebbe essere relativamente semplice.
  • Proprio come Symfony2, Silex è principalmente un framework di controller. Fornisce una struttura, ma le parti del modello e della vista sono gestite da librerie di terze parti (come Twig o Doctrine).
  • Poiché la logica di business non dovrebbe essere nei controller in ogni caso, se si separa quel codice e si accendono i controller, il fattore limitante in termini di dimensioni del progetto sarà solo la quantità di percorsi che si hanno.

Detto questo, Silex non ti darà i bundle che Symfony2 ha.

+6

La migrazione tra i due è tutt'altro che semplice (andando su Sy2 -> Silex) soprattutto considerando l'estrema mancanza di una buona documentazione completa per i provider Silex ai componenti Symfony. Detto questo, i tuoi altri punti sono giusti sul denaro. L'altra grande differenza è che Symfony2 è pronto per la produzione e Silex è ancora in modalità -dev. – lucian303

+2

Symfony => Silex sarà più difficile del contrario perché le cose che hai dato per scontato ora non ci sono più. I fornitori principali di Silex hanno una documentazione decente, ma la maggior parte dei fornitori di terze parti no. – igorw

+0

igorw Sono un po 'confuso da cosa intendi per "la tua logica di business non dovrebbe essere nei controller in ogni caso" perché se non dovesse entrare nei tuoi controller, dove andrà allora? Va nelle entità? o lo metti nei servizi? – ILikeTacos

5

Silex è basato sui componenti Symfony2 indipendenti e non è realmente considerato un framework di applicazioni Web a stack completo come Symfony. Dovresti usarlo solo per progetti molto piccoli che richiedono solo pochi file, altrimenti diventerai troppo grande.

+7

utilizzando Silex solo per piccoli progetti? Doh. Puoi usarlo anche nel tuo grande progetto. Perchè no? È possibile creare la propria struttura dell'applicazione - spostando la logica aziendale dai controller, è possibile creare repository (Doctrine DBAL o PDO). –

15

Ecco alcune interessanti riflessioni su quando utilizzare Silex (soprattutto nei commenti): https://web.archive.org/web/20160131151109/http://www.testically.org/2011/10/11/is-there-a-specific-situation-when-to-use-a-php-micro-framework-like-silex/

Silex in sé è abbastanza spoglia, il che significa che se si vuole più quindi solo il routing e test sarà necessario aggiungere caratteristiche specifiche (DB, Twig ...) sotto forma di servizi. vi consiglio di dare un'occhiata ad alcuni piatti già pronti che forniscono questo: https://github.com/lyrixx/Silex-Kitchen-Edition o https://github.com/ivoba/superleansilexplate (thats miniera :))

Un altro punto è che Silex ha un ingombro probabilmente più leggero di Symfony2, quindi se avete bisogno un sito più piccolo & più veloce, Silex merita una considerazione.

7

Silex è adatto per piccoli progetti, ma può essere utilizzato anche per progetti di grandi dimensioni. Quello che mi piace di più di Silex è che ho il controllo completo sulla struttura del mio progetto, ma è mia responsabilità se il mio progetto è ben organizzato o meno.
Anche io lo consiglio su symfony se come me, hai spostato la logica dell'applicazione sul lato client usando un framework JS. Per me sembra eccessivo usare symfony solo per servire alcune richieste JSON.

+0

Ciao olanod, anche se questo post è piuttosto vecchio, mi piacerebbe sapere quale framework JS hai usato in congiunzione con sylix? Grazie! – user2345998

+1

Ciao, a quel tempo stavo usando angolare che è ancora molto (il più?) Popolare. Ora sono uno dei primi ad adottare 'aurelia', un fantastico framework di nuova generazione che è molto facile da usare;) – olanod

-2

Silex è un microframework PHP. E 'uso per il piccolo project.The stile di codifica del symfony e la selce è quasi simile al symfony.But lo symfony è uso per i grandi progetti

+0

Le dimensioni non contano. Symfony ha una struttura più rigida, che può essere utile se lavori con molti sviluppatori sul progetto. Mentre in Silex sei più responsabile della struttura. Per me Silex è meno offensivo e più vicino a PHP e lavoro da solo, quindi è quello che uso, anche su un grande progetto. – martti

8

(UPDATE) Dal Symfony 2.8 È possibile utilizzare symfony 2 come una microframework con un controller del kernel micro. Vedi breve descrizione qui: symfony.com/blog/new-in-symfony-2-8-symfony-as-a-microframework.Ora Symfony ci dà più controllo sulla struttura e l'architettura. Buona alternativa a Silex se preferisci lo stile di Symfony 2.

Confrontando Silex a Symfony 2.8, prima versione

Silex microframework è basata su Symfony ma non è esattamente la stessa cosa. Usare un framework full-stack come Symfony per un piccolo progetto è semplicemente un overkilling del progetto.

In un microframework, è più flessibile scegliere gli strumenti che si desidera utilizzare. Puoi prendere più decisioni sull'architettura e la logica dell'applicazione. In un framework full stack con una certa estensione avresti un'architettura e una logica già predefinite con restrizioni e limitazioni alla sua configurazione.

Silex è stato progettato per creare lo strumento anziché ottenere gli strumenti impostati che potrebbero non essere necessari. Direi che per i piccoli progetti in Symfony dovresti rimuovere le funzionalità: in Silex dovresti aggiungerle.

Non è anche vero che Silex non è adatto per progetti più grandi. Silex può essere usato con successo per progetti più grandi, ma ricorda che dovresti costruire i tuoi strumenti per soddisfare le tue esigenze (se hai bisogno di personalizzare l'architettura e la logica - forse questa è la strada giusta da percorrere). Oltre a questo, vorrei prendere in considerazione l'utilizzo di Symfony, perché Symfony ha già un sacco di strumenti disponibili fuori dalla scatola.

Silex dependency injection

Tenete a mente che: Silex limitations

Per concludere, Silex è un bene per le applicazioni più piccoli e per chi, si può sicuramente sostituire Symfony. Silex può anche essere usato per progetti più grandi (ma per applicazioni più grandi consiglierei di usare invece il framework full-stack, come Symfony).

Riferimento per vetrini a: http://www.slideshare.net/dustin.whittle/silex-from-micro-to-full-stack. Se ne hai voglia, vai avanti e leggi qualcosa di più sul framework Silex.

Mi raccomando anche di guardare questa intro confrontando Silex con Symfony: https://www.youtube.com/watch?v=RDVtnsoOysE.

Anche in questo caso, alcuni Pro per l'utilizzo di Silex proviene da persone che effettivamente lo utilizzano: https://www.youtube.com/watch?v=OJcdHGJFfLU

1

Silex è un grande quadro di riferimento per le piccole e grandi applicazioni. Dare una struttura al progetto è una tua responsabilità in Silex. Man mano che il progetto diventa più grande, è possibile integrare i componenti di symfony in esso, anche se la documentazione per il provider symfony non è particolarmente adatta per il componente di sicurezza di symfony.

Silex è ideale per progetti di prototipazione. Se sai che utilizzerai la maggior parte dei componenti di symfony, allora vai su symfony perché finirai con l'integrazione di quasi tutti i componenti di symfony in silex.

Nel mio caso avevo bisogno di una velocità immediata e silex mi ha fornito la velocità e sebbene io stia usando la maggior parte dei componenti di symfony, è molto più veloce di symfony.