2011-10-31 26 views
9

Tôi mới sử dụng phiên bản 2 của khung công tác Symfony. Tôi đã thực hiện một số dự án với v1 nhưng bây giờ cố gắng để có được đầu của tôi xung quanh phiên bản mới và các tính năng của nó. Tôi đã đọc qua khái niệm về Gói nhưng mục đích của nó vẫn chưa rõ ràng đối với tôi.Mô tả chính xác về Gói Symfony trong một ứng dụng web phức tạp

Giả sử bạn có một ứng dụng web lớn, một CRM chẳng hạn. Các bó trông như thế nào? Có thể là NewsletterBundle (để gửi bản tin), ContactManagementBundle (để quản lý danh bạ), UserBundle (để chỉnh sửa người dùng và quyền của họ).

Hoặc nó sẽ ít bị cắt như EmailBundle (để xử lý toàn bộ lưu lượng email), CRMBundle (để đặt tất cả mã CRM của bạn), PermissionsBundle, ApiBundle.

Trả lời

21

Tôi thích nghĩ về điều này như sau: một gói phải thể hiện một tính năng hoặc tập hợp các tính năng tương tự cho một dự án.

Ví dụ đầu tiên của bạn là sử dụng tốt hơn các gói so với ví dụ thứ hai của bạn, vì mục đích của mỗi gói được xác định rõ hơn. Mặc dù có thể sử dụng một CRMBundle cho mọi thứ, bạn sẽ không thực sự tận dụng khả năng của Symfony để tổ chức mã của bạn. Ngoài ra, nếu bạn muốn chuyển mã bản tin của mình vào dự án mới, nhưng không phải tất cả mã CRM, bạn sẽ có thời gian sao chép dễ dàng hơn một NewsletterBundle so với sao chép trên CRMBundle và sau đó cắt bớt nó.

Khi nghĩ về dự án Symfony2, đôi khi bạn muốn quên mọi thứ bạn biết về symfony 1.x, vì chúng có cách tiếp cận cực kỳ khác nhau để giải quyết nhiều vấn đề. Ví dụ, trong symfony 1 phổ biến để xây dựng một ứng dụng 'frontend' và 'backend' cho một dự án, và mỗi ứng dụng rõ ràng sẽ chứa logic cụ thể cho các phần của dự án. Vì vậy, bạn có thể có một bộ điều khiển Bản tin trong cả giao diện người dùng và ứng dụng phụ trợ. Trong Symfony2, bạn nên sử dụng chỉ một gói Bản tin, nhưng với hai bộ điều khiển (có lẽ có tên là 'frontend' và 'backend'). Một lần nữa, một lợi ích ngay lập tức cho điều này là làm thế nào tái sử dụng mã của bạn trở thành.

+0

Cảm ơn rất nhiều, điều đó làm cho mọi thứ rõ ràng hơn. – tomvo

+2

"Khả năng sắp xếp mã của Symfony"? Tôi xin lỗi, nhưng symfony chỉ là bắt buộc bạn phải tạo bó, và do đó bị ràng buộc với tự động phát hiện dựa trên quy ước (có thể bạn dịch thành "tổ chức mã"). – Florian

+1

Tôi đã học được điều gì đó với symfony, đó là việc tổ chức mọi thứ theo bó (thường) là một ý tưởng tồi, là một nhà phát triển ứng dụng. Bạn kết thúc với một khuôn khổ. Thay vào đó, hãy tổ chức mã của bạn như thể không có khung. Symfony2 là rất tốt ở đây, nó rất linh hoạt mà bạn có thể làm điều đó. – Florian

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