2012-06-29 31 views
34

Tôi muốn thử Silex nhưng tôi có một số câu hỏi.Sự khác biệt giữa Symfony và Silex

Tôi biết sử dụng Symfony2 và tôi muốn biết nếu Silex rất khác với Symfony hoặc nó giống nhau (cùng thao tác, cùng mã ...)?

Hơn nữa, Silex được đề xuất cho các dự án PHP nhỏ và Symfony cho các dự án trung bình hoặc lớn, đó là sự thật?

Trả lời

45

Một vài điều đáng chú ý:

  • silex được dựa trên các thành phần Symfony2, giống như khuôn khổ Symfony2 là. Như vậy, nó có thể được coi là một giao diện người dùng thay thế cho các thành phần (người dùng là một nhà phát triển web).
  • Vì chúng sử dụng cùng một cơ sở, việc di chuyển giữa chúng nên tương đối dễ dàng.
  • Giống như Symfony2, Silex chủ yếu là một khung điều khiển. Nó cung cấp cho bạn một số cấu trúc, nhưng mô hình và các bộ phận xem được xử lý bởi các thư viện của bên thứ ba (chẳng hạn như Twig hoặc Doctrine).
  • Vì logic nghiệp vụ của bạn không nằm trong bộ điều khiển, nếu bạn tách mã đó ra và giữ đèn điều khiển, yếu tố hạn chế về kích thước dự án sẽ chỉ là số lượng tuyến bạn có.

Điều đó nói rằng, Silex sẽ không cung cấp cho bạn các gói mà Symfony2 có.

+6

Di chuyển giữa hai cách này không dễ dàng (đi Sy2 -> Silex) đặc biệt là xem xét việc thiếu tài liệu hoàn chỉnh, tốt cho các nhà cung cấp Silex cho các thành phần của Symfony. Điều đó đang được nói, các điểm khác của bạn là đúng trên tiền. Điểm khác biệt lớn nhất là Symfony2 là sản phẩm sẵn sàng và Silex vẫn đang ở chế độ -dev. – lucian303

+2

Symfony => Silex sẽ khó hơn so với ngược lại bởi vì những thứ bạn đã cho là không còn ở đó nữa. Các nhà cung cấp cốt lõi trong silex có tài liệu phong nha, nhưng hầu hết các nhà cung cấp bên thứ ba thì không. – igorw

+0

igorw Tôi là một chút bối rối bởi những gì bạn có nghĩa là bởi "logic kinh doanh của bạn không nên được trong bộ điều khiển của bạn anyway" bởi vì nếu nó không đi trong bộ điều khiển của bạn, nơi nào nó đi sau đó? Nó có đi trong thực thể không? hoặc bạn đặt nó vào dịch vụ? – ILikeTacos

5

Silex dựa trên các thành phần Symfony2 độc lập và không thực sự được coi là một khung ứng dụng web đầy đủ ngăn xếp như Symfony. Bạn chỉ nên sử dụng nó cho các dự án rất nhỏ mà chỉ yêu cầu một vài tập tin, hoặc bạn sẽ outgrow nó khá nhanh chóng.

+7

chỉ sử dụng Silex cho các dự án nhỏ? Doh. Bạn cũng có thể sử dụng nó trong dự án lớn của mình. Tại sao không? Bạn có thể tạo cấu trúc riêng của ứng dụng - chuyển logic nghiệp vụ ra khỏi các bộ điều khiển, bạn có thể tạo các kho lưu trữ (Doctrine DBAL hoặc PDO). –

15

Dưới đây là một vài suy nghĩ thú vị trên khi sử dụng silex (đặc biệt là trong các ý kiến): 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 chính nó là khá trần, có nghĩa là nếu bạn muốn biết thêm sau đó chỉ cần định tuyến và kiểm tra bạn sẽ cần phải thêm các tính năng cụ thể (DB, Twig ...) dưới dạng Dịch vụ. Tôi khuyên bạn nên có một cái nhìn tại một số tấm readymade mà cung cấp cho bạn với điều này: https://github.com/lyrixx/Silex-Kitchen-Edition hoặc https://github.com/ivoba/superleansilexplate (thats tôi :))

điểm khác là silex có một dấu chân có thể nhẹ hơn Symfony2, vì vậy nếu bạn cần một trang web nhanh hơn & nhanh hơn, Silex đáng xem xét.

7

Silex là tốt cho các dự án nhỏ, nhưng nó có thể được sử dụng cho các dự án lớn. Điều tôi thích nhất của Silex là tôi có toàn quyền kiểm soát cấu trúc dự án của mình nhưng đó là trách nhiệm của tôi nếu dự án của tôi được tổ chức tốt hay không.
Ngoài ra, tôi khuyên bạn nên sử dụng symfony nếu như tôi, bạn đã chuyển logic ứng dụng của mình sang phía máy khách bằng cách sử dụng khung công tác JS. Đối với tôi, nó cảm thấy quá mức cần thiết để sử dụng symfony chỉ để phục vụ một vài yêu cầu json.

+0

Hi olanod, mặc dù bài đăng này khá cũ Tôi muốn biết bạn đã sử dụng khung JS nào kết hợp với sylix? Cảm ơn! – user2345998

+1

Xin chào, tại thời điểm đó tôi đã sử dụng góc cạnh mà vẫn còn rất (phổ biến nhất?) Phổ biến. Bây giờ tôi là người chấp nhận sớm 'aurelia', một khung công tác thế hệ mới tuyệt vời rất dễ sử dụng;) – olanod

-2

Silex là một microframework PHP. Đó là sử dụng cho các project.The nhỏ mã hóa phong cách của symfony và silex là gần như tương tự như symfony.But symfony là sử dụng cho các dự án lớn

+0

Kích thước không quan trọng. Symfony có cấu trúc cứng nhắc hơn, có thể thuận tiện nếu bạn làm việc với nhiều nhà phát triển trong dự án. Trong khi đó, ở Silex bạn có trách nhiệm hơn với cấu trúc. Đối với tôi, Silex ít bị làm phiền và gần gũi hơn với PHP và tôi làm việc một mình, vì vậy đó là những gì tôi sử dụng, ngay cả trong một dự án lớn. – martti

8

(UPDATE) Kể từ Symfony 2.8 Bạn có thể sử dụng symfony 2 như một microframework với một bộ điều khiển hạt nhân micro. Xem mô tả ngắn tại đây: symfony.com/blog/new-in-symfony-2-8-symfony-as-a-microframework.Bây giờ Symfony cho phép chúng ta kiểm soát nhiều hơn cấu trúc và kiến ​​trúc. Tốt thay thế cho Silex nếu bạn thích phong cách Symfony 2.

So sánh silex để Symfony trước 2.8 phát hành

silex microframework được dựa trên Symfony nhưng nó không hoàn toàn giống nhau. Sử dụng một framework full-stack chẳng hạn như Symfony cho một dự án nhỏ chỉ đơn giản là overkilling dự án.

Trong một vi phim, bạn linh hoạt hơn để chọn các công cụ bạn muốn sử dụng. Bạn có thể đưa ra nhiều quyết định hơn về kiến ​​trúc ứng dụng và logic. Trong một khung công tác đầy đủ với một số mở rộng, bạn sẽ có một kiến ​​trúc và một logic đã được xác định trước với các hạn chế và hạn chế đối với cấu hình của nó.

Silex được thiết kế để xây dựng công cụ thay vì nhận các công cụ thiết lập mà bạn có thể không cần. Tôi sẽ nói rằng đối với các dự án nhỏ trong Symfony bạn sẽ phải loại bỏ các tính năng - trong Silex bạn sẽ phải thêm chúng.

Cũng không đúng khi Silex không phù hợp với các dự án lớn hơn. Silex có thể được sử dụng thành công cho các dự án lớn hơn nhưng hãy nhớ rằng bạn sẽ phải xây dựng các công cụ của mình để phù hợp với yêu cầu của bạn (nếu bạn cần tùy chỉnh kiến ​​trúc và logic - có lẽ đây là cách đi đúng). Ngoài ra, tôi sẽ cân nhắc sử dụng Symfony thay vì Symfony đã có sẵn các công cụ sẵn có.

Silex dependency injection

Ghi nhớ rằng: Silex limitations

Để kết luận, silex là tốt cho các ứng dụng nhỏ hơn và cho những người, nó chắc chắn có thể thay thế Symfony. Silex cũng có thể được sử dụng cho các dự án lớn hơn (nhưng đối với các ứng dụng lớn hơn, tôi khuyên bạn nên sử dụng framework full-stack thay vì, như Symfony).

Tham chiếu cho các trang trình bày tại: http://www.slideshare.net/dustin.whittle/silex-from-micro-to-full-stack. Nếu bạn cảm thấy thích nó, hãy tiếp tục và đọc thêm một số thông tin về khung công tác Silex.

Tôi cũng khuyên bạn nên xem phần giới thiệu này so sánh Silex với Symfony: https://www.youtube.com/watch?v=RDVtnsoOysE.

Một lần nữa, một vài Pro cho việc sử dụng silex đến từ những người thực sự sử dụng nó: https://www.youtube.com/watch?v=OJcdHGJFfLU

1

silex là một khuôn khổ tuyệt vời cho các ứng dụng nhỏ cũng như lớn. Đưa ra cấu trúc cho dự án là trách nhiệm của bạn trong Silex. Khi dự án trở nên lớn hơn, bạn có thể tích hợp một cách độc đáo các thành phần của symfony vào nó mặc dù tài liệu cho nhà cung cấp symfony không tốt cho đặc biệt đối với thành phần bảo mật của symfony.

Silex rất tốt cho các dự án tạo mẫu. Nếu bạn biết bạn sẽ sử dụng hầu hết các thành phần của symfony thì hãy dùng symfony vì bạn sẽ kết hợp với hầu hết các thành phần của symfony vào trong silex.

Trong trường hợp của mình, tôi cần tốc độ thoát ra khỏi hộp và silex cung cấp cho tôi tốc độ và mặc dù tôi đang sử dụng hầu hết các thành phần của symfony, nhanh hơn rất nhiều so với symfony.

Các vấn đề liên quan