2012-06-29 6 views
34

Ich möchte Silex versuchen, aber ich habe ein paar Fragen.Der Unterschied zwischen Symfony und Silex

Ich weiß, Symfony2 zu verwenden, und ich würde gerne wissen, ob Silex von Symfony sehr unterschiedlich ist oder es ist die gleiche Sache (gleiche Operation, gleichen Code ...)?

Außerdem wird Silex für kleine PHP-Projekte und Symfony für mittlere oder große Projekte empfohlen, stimmt's?

Antwort

45

Ein paar Dinge bemerkenswert:

  • Silex basiert auf den Symfony2 Komponenten, ebenso wie die Symfony2-Framework ist. Als solches kann es als eine alternative Benutzerschnittstelle zu den Komponenten betrachtet werden (der Benutzer ist ein Webentwickler).
  • Da sie die gleiche Basis verwenden, sollte die Migration zwischen ihnen relativ einfach sein.
  • Genau wie Symfony2 ist Silex meist ein Controller-Framework. Es bietet Ihnen eine gewisse Struktur, aber die Modell- und Ansichtsteile werden von Bibliotheken anderer Hersteller (z. B. Twig oder Doctrine) verarbeitet.
  • Da Ihre Geschäftslogik sowieso nicht in Ihren Controllern sein sollte, wenn Sie diesen Code trennen und Ihre Controller hell halten, ist der limitierende Faktor in Bezug auf die Projektgröße nur die Anzahl der Routen, die Sie haben.

Das heißt, Silex wird Ihnen nicht die Bündel geben, die Symfony2 hat.

+6

Die Migration zwischen den beiden ist alles andere als einfach (vor allem Sy2 -> Silex), vor allem wenn man bedenkt, dass die Silex-Anbieter für Symfony-Komponenten nicht gut und vollständig dokumentiert sind. Das heißt, Ihre anderen Punkte sind direkt auf das Geld. Der andere große Unterschied ist, dass Symfony2 produktionsbereit ist und Silex immer noch im -dev-Modus ist. – lucian303

+2

Symfony => Silex wird schwieriger sein als umgekehrt, weil die Dinge, die du für selbstverständlich hältst, jetzt nicht mehr da sind. Die Kernanbieter von Silex verfügen über eine anständige Dokumentation, die meisten Drittanbieter jedoch nicht. – igorw

+0

igorw Ich bin etwas verwirrt darüber, was du meinst "Deine Geschäftslogik sollte sowieso nicht in deinen Controllern sein", denn wenn es nicht in deinen Controllern läuft, wo geht es dann hin? Geht es in den Entitäten? oder steckst du es in Dienste? – ILikeTacos

5

Silex basiert auf den unabhängigen Symfony2-Komponenten und wird nicht wirklich als Full-Stack-Webanwendungsframework wie Symfony betrachtet. Sie sollten es nur für sehr kleine Projekte verwenden, die nur ein paar Dateien benötigen, oder Sie werden es ziemlich schnell entwachsen.

+7

Silex nur für kleine Projekte verwenden? Do. Sie können es auch in Ihrem großen Projekt verwenden. Warum nicht? Sie können Ihre eigene Struktur der Anwendung erstellen, indem Sie Geschäftslogik aus Controllern heraus verschieben, Sie können Repositories erstellen (Doctrine DBAL oder PDO). –

15

Hier sind einige interessante Gedanken auf, wenn Silex (vor allem in den Kommentaren) zu verwenden: 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 ist selbst ziemlich kahl, was bedeutet, dass, wenn Sie mehr wollen, dann nur Routing und Tests, die Sie hinzufügen müssen Besonderheiten (DB, Twig ...) in Form von Services. Ich empfehle einen Blick auf einige vorgefertigte Platten aufzunehmen, die Ihnen dabei zur Verfügung stellen: https://github.com/lyrixx/Silex-Kitchen-Edition oder https://github.com/ivoba/superleansilexplate (das ist mein :))

Ein weiterer Punkt ist, dass Silex einen wahrscheinlich leichter Fußabdruck als Symfony2 hat, also, wenn Sie brauchen eine kleinere & schnellere Seite, Silex ist eine Überlegung wert.

7

Silex ist gut für kleine Projekte, aber es kann auch für große Projekte verwendet werden. Was ich am meisten an Silex mag, ist, dass ich die volle Kontrolle über meine Projektstruktur habe, aber es liegt in meiner Verantwortung, ob mein Projekt gut organisiert ist oder nicht.
Auch ich empfehle es über Symfony, wenn Sie wie ich, Ihre Anwendungslogik auf die Client-Seite mit einem JS-Framework bewegt. Für mich ist es ein Overkill, symfony nur für einige json-Anfragen zu nutzen.

+0

Hallo Olanod, obwohl dieser Beitrag ziemlich alt ist, würde ich gerne wissen, welches JS-Framework du in Verbindung mit sylix benutzt hast? Vielen Dank! – user2345998

+1

Hallo, damals habe ich eckig benutzt, das ist immer noch sehr (am meisten?) Beliebt. Jetzt bin ich ein früher Anwender von 'Aurelia', ein cooles Next-Gen-Framework, das sehr einfach zu bedienen ist;) – olanod

-2

Silex ist ein PHP-Mikroframework. Es ist die Verwendung für die kleine Projekt.Die Codierungsstil des symfony und die silex ist fast ähnlich dem symfony.But die symfony

+0

Die Größe spielt keine Rolle. Symfony hat eine steifere Struktur, was praktisch sein kann, wenn Sie mit vielen Entwicklern am Projekt arbeiten. Während Sie in Silex mehr für die Struktur verantwortlich sind. Für mich ist Silex weniger verstörend und näher an PHP und ich arbeite alleine, also benutze ich das auch für ein großes Projekt. – martti

8

(UPDATE) Seit Symfony 2.8 Mit 2 verwenden für die großen Projekte können symfony als Mikroframework mit einem Micro Kernel Controller. Siehe kurze Beschreibung hier: symfony.com/blog/new-in-symfony-2-8-symfony-as-a-microframework.Jetzt gibt uns Symfony mehr Kontrolle über Struktur und Architektur. Gute Alternative zu Silex, wenn Sie den Symfony 2-Stil bevorzugen.

Vergleich Silex auf Symfony vor Version 2.8

Silex microframework basiert auf Symfony aber es ist nicht genau das gleiche. Wenn Sie ein Full-Stack-Framework wie Symfony für ein kleines Projekt verwenden, überstürzen Sie einfach das Projekt.

In einem Mikrorahmen haben Sie mehr Flexibilität bei der Auswahl der Werkzeuge, die Sie verwenden möchten. Sie können mehr Entscheidungen über Anwendungsarchitektur und Logik treffen. In einem Full-Stack-Framework mit einem gewissen Umfang hätten Sie eine Architektur und eine Logik, die bereits mit Einschränkungen und Einschränkungen für ihre Konfiguration vordefiniert sind.

Silex wurde entwickelt, um das Tool aufzubauen, anstatt die Set-Tools zu erhalten, die Sie möglicherweise nicht benötigen. Ich würde sagen, dass Sie für kleine Projekte in Symfony Features entfernen müssten - in Silex müssten Sie sie hinzufügen.

Es ist auch nicht wahr, dass Silex nicht für größere Projekte geeignet ist. Silex kann mit Erfolg für größere Projekte verwendet werden, aber denken Sie daran, dass Sie Ihre Werkzeuge entsprechend Ihren Anforderungen aufbauen müssen (wenn Sie die Architektur und Logik anpassen müssen - vielleicht ist dies der richtige Weg). Ansonsten würde ich stattdessen Symfony verwenden, da Symfony bereits zahlreiche Tools zur Verfügung hat.

Silex dependency injection

Beachten Sie, dass: Silex limitations

Abschließend ist Silex für kleinere Anwendungen gut und für diejenigen, kann es sicherlich Symfony ersetzen. Silex kann auch für größere Projekte verwendet werden (aber für größere Anwendungen würde ich stattdessen das Full-Stack-Framework wie Symfony empfehlen).

Referenz für Objektträger unter: http://www.slideshare.net/dustin.whittle/silex-from-micro-to-full-stack. Wenn Ihnen danach ist, lesen Sie mehr über den Silex-Rahmen.

Ich empfehle auch dieses Intro zu beobachten, Silex mit Symfony zu vergleichen: https://www.youtube.com/watch?v=RDVtnsoOysE.

Wieder ein paar Pro für Silex mit von Menschen kommen, die sie tatsächlich nutzen: https://www.youtube.com/watch?v=OJcdHGJFfLU

1

Silex ist ein großer Rahmen für kleine als auch große Anwendungen. Das Projekt zu strukturieren ist Ihre Verantwortung in Silex. Wenn das Projekt größer wird, können Sie Symfony-Komponenten problemlos in das Projekt integrieren, obwohl die Dokumentation für den Symfony-Anbieter nicht so gut ist, besonders für die Symfony-Sicherheitskomponente.

Silex eignet sich hervorragend für Prototyping-Projekte. Wenn Sie wissen, dass Sie die meisten Symfony-Komponenten verwenden werden, dann gehen Sie für Symfony, weil Sie am Ende fast alle Symfony-Komponenten in Silex integrieren werden.

In meinem Fall brauchte ich Geschwindigkeit direkt aus der Box und Silex stellte mir die Geschwindigkeit und obwohl ich die meisten der symfony Komponenten verwende, ist es viel schneller als symfony out of the box.

Verwandte Themen