2012-08-13 16 views
7

Oke vì vậy tôi chuẩn bị tạo một trang web bằng cách sử dụng symfony 2.Đối với những gì tôi sẽ làm cho một bó? (Symfony 2)

Tôi có nên tạo một gói "chính" để kiểm soát/gộp tất cả các gói khác không? Với các gói khác, tôi đang nghĩ đến việc cho phép nói gói "thư viện" kiểm soát mọi thứ liên quan đến ảnh và gói "lưu trữ" kiểm soát một phần cửa hàng.

Điều gì sẽ là thực hành tốt nhất (hoặc ít nhất) và các đội chuyên nghiệp sẽ làm như thế nào?

Trả lời

3

Theo tài liệu symfony, gói phải phù hợp và cấu trúc khép kín. Vì vậy, nếu ví dụ "cửa hàng" và "thư viện" có liên quan theo một cách nào đó (ví dụ: sử dụng cùng một kiểu), thì chúng phải nằm trong một gói (AppBundle, CoreBundle, PlatformBundle - bất kỳ thứ gì bạn muốn). Nhưng nếu bộ sưu tập là đoạn mã hoàn toàn riêng biệt và có thể dễ dàng tham gia vào một dự án khác - thì bạn nên xem xét loại trừ nó để tách gói.

Tôi nghĩ một ý tưởng hay là xem xét một số dự án về github và xem cách người khác xử lý vấn đề này.

+0

Tôi thực sự không biết github hoạt động như thế nào hoặc cách tìm một dự án phù hợp với những gì tôi muốn làm trong một khoảng thời gian khá. Nhưng những gì bạn nói là: tạo 1 gói (appBundle hoặc coreBundle) sẽ có trang web cơ bản và sau đó cho các phần đặc biệt có thể được sử dụng cho các dự án khác (thư viện và cửa hàng) có gói của riêng họ? –

+0

Có - chính xác. Cách tiếp cận này có một số lợi thế. Ví dụ 1) Nó hiệu quả hơn một chút 2) Bạn có thể thấy những gì bạn có thể sử dụng ở một nơi khác ngay từ cái nhìn đầu tiên. 3) IMO có dễ dàng hơn để quản lý các thử nghiệm của bạn theo cách này 4) Ứng dụng của bạn là "di động" hơn. Ngoài các phần độc lập trong ứng dụng của bạn, bạn có thể cân nhắc tạo các gói riêng cho các thứ sử dụng (ví dụ như một số lớp hoặc lớp học định nghĩa trạng thái http) hoặc một phần logic khác với ứng dụng (ví dụ: AdminBundle). Và nói chung sau nhiều lần khám phá, tôi đã khám phá ra giải pháp thuận tiện và phổ biến nhất này. – Cyprian

2

Xem các câu hỏi và câu trả lời của tôi sau đây để chúng:

Về cơ bản, các dự án cuối cùng của tôi tôi không sử dụng gói cho ứng dụng cụ thể mã; ngoại lệ duy nhất là cho những thứ được mã hóa cứng trong một gói - như Đồ đạc Doctrine - mà tôi đặt vào AppBundle. Mọi thứ khác - mô hình, bộ điều khiển, dịch vụ, loại biểu mẫu, v.v. - đều nằm ngoài bất kỳ gói nào.

+0

Cảm ơn bạn đã anwser, tôi đã quen với symfony2 vào lúc này vì vậy việc thay đổi rất nhiều về thiết lập cơ bản có thể không phải là điều thông minh. Nhưng tôi sẽ xem xét cách tiếp cận này. –

+0

Hey Elnur, tôi đã đọc một số chủ đề khác của bạn và tôi không nắm bắt cách bạn đặt những thứ như bộ điều khiển, biểu mẫu, v.v ... bên ngoài bất kỳ Gói nào. Làm thế nào mà làm việc một cách chính xác? Các gói phần mềm nào phục vụ cho bạn sau đó thực sự? –

+0

Tôi đang lên kế hoạch mở rộng câu trả lời cho câu hỏi đầu tiên từ danh sách mà tôi đã đưa ra ở đây với các ví dụ về việc xác định các bộ điều khiển, biểu mẫu, vv bên ngoài các gói. Chỉ cần một chút thời gian. –

1

Giống như @Cyprian cho biết một gói là một tập hợp các chức năng có thể hoạt động độc lập. Khi điều đó xảy ra trong khi phát triển, chúng ta không phải lúc nào cũng biết khi nào mọi thứ riêng biệt. Nó đi kèm với thời gian.

Cá nhân, tôi đang làm việc với Symfony2 kể từ tháng Hai và tôi không bao giờ ngừng đọc sách hướng dẫn và sách liên quan để hiểu sâu hơn. Điều đó đã giúp rất nhiều và đọc rất thú vị, tôi đảm bảo với bạn :)

Đây là top favourites documentation pages, en enlightening blog posts on delicious của tôi.

Đối với câu hỏi trực tiếp của bạn, hãy quên "frontend" và "backend" như chúng ta đã làm trong symfony 1.x. Chỉ cần nghĩ về các thực thể Model (như trong hàng A SINGLE) và xây dựng trong một gói. Khi mã của bạn sẽ phát triển, bạn sẽ thấy cách tháo rời và tách biệt trong các gói. Bạn chỉ cần lưu ý để tách các chức năng của bạn bằng các phương thức nhỏ và tái cấu trúc lại.

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