2011-09-21 25 views
14

Chúng tôi đang tạo một SaaS giám sát các tài sản nhất định. Điều này có nghĩa là nó lấy dữ liệu, lưu nó và hiển thị nó trong một webinterface.Cách chia sẻ mô hình Symfony2 với một số dự án

Đối với điều này, chúng tôi có một vài thành phần mà chúng ta tạo ra với/đang di chuyển đến Symfony2:

  • một frontend application web, nơi người dùng có thể xem dữ liệu của họ
  • một backend ứng dụng web hành chính, nơi chúng tôi tạo màn hình mới, người dùng, v.v.
  • API
  • ứng dụng truy xuất dữ liệu đã nhận từ hàng đợi và đặt trong cơ sở dữ liệu của chúng tôi (đây là tập lệnh riêng biệt, nhưng tôi đang nghĩ đến việc làm lại này Lệnh Symfony được gọi bởi cron)

Tất cả bốn ứng dụng này chia sẻ cùng một kiểu máy: cơ sở dữ liệu chính chứa tất cả người dùng, màn hình và dữ liệu.

Câu hỏi của tôi là: Tôi nên cấu trúc các dự án này như thế nào trong Symfony2?

  1. Tôi có tạo một gói riêng biệt chứa các thực thể cho cơ sở dữ liệu của tôi không và có bốn dự án bao gồm các thực thể đó và làm việc với chúng?
  2. Tôi có thể tạo thư mục 'model' trong thư mục ứng dụng Symfony của mình, thư mục này được tất cả các gói trong thư mục/src của tôi sử dụng không?
  3. Một số cách khác, sạch hơn để thực hiện việc này?

Tùy chọn 1 có vẻ hơi kỳ lạ, vì một gói, theo sự hiểu biết của tôi, cần định tuyến, chế độ xem, bộ điều khiển, v.v. Sử dụng chỉ cho các thực thể sẽ hơi lạ.

Tùy chọn 2 có vẻ không sao, vì thư mục/ứng dụng được coi là 'chung' cho mọi thứ nằm trong thư mục/src (ví dụ, các tham số nằm ở đó). Tuy nhiên, không có thư mục 'mô hình' ở đó, và tôi không chắc rằng có nên có?

Tôi hiểu rằng có rất ít 'phương pháp hay nhất' đã có cho Symfony 2, vì nó hoàn toàn mới. Nhưng tôi muốn xem nếu có bất kỳ thực hành nào thích hợp hơn thì những người khác, theo ý kiến ​​của bạn.

Mọi phản hồi đều được chào đón nhiều hơn. Cảm ơn trước,

Dieter

Trả lời

6

gì Tôi hiện đang làm là lựa chọn đầu tiên: tạo ra một bó riêng biệt cho các đơn vị của bạn. Đó là nơi tôi lưu trữ đồ đạc, thực thể, hình thức và các bài kiểm tra liên quan đến thực thể.

Một gói không NOT cần có định tuyến, bộ điều khiển, chế độ xem, v.v. Tôi thực sự thấy một gói bản thiết kế, và tất cả những gì nó làm là tài nguyên bản đồ tàu với nó để chúng có thể dễ dàng sử dụng lại trong các dự án.

Để thêm mô hình vào thư mục ứng dụng ... Tôi sẽ không thích điều đó. Tôi thấy thư mục ứng dụng là nơi mà tất cả cấu hình nên là. Mặc dù bạn có thể ghi đè các chế độ xem theo số app/Resources, bất cứ khi nào tôi muốn ghi đè nội dung nào đó, tôi tạo một nhóm mới.

+0

Đó là những gì tôi cần biết :) Cảm ơn! – Dieter

1

Tôi chưa sử dụng kỹ thuật này trong ứng dụng symfony2 thế giới thực - nhưng đó là con trỏ khi bạn yêu cầu bất kỳ phản hồi nào.

service container có vẻ là phương pháp Smyfony2 để cung cấp dịch vụ trên toàn cầu. Vì vậy, trong trường hợp của bạn, các đối tượng truy cập mô hình sẽ được định nghĩa là các dịch vụ như được thảo luận trong liên kết được cung cấp, và sau đó có thể được sử dụng từ bất kỳ gói nào.

Bây giờ, đối tượng dịch vụ đi theo nhóm nào? Chúng tôi có thể xếp chúng vào một nhóm riêng biệt khi chúng được chia sẻ giữa các nhóm khác. Tuy nhiên, tôi cho rằng mô hình sẽ không hoàn toàn đối xứng đối với tất cả các gói, vì vậy chúng tôi có thể đặt mô hình được chia sẻ thành một gói riêng biệt, và đặt các thực thể cụ thể theo gói vào chính gói đó. Sau đó, các kỹ thuật tiêm được thảo luận trong liên kết ở trên có thể được sử dụng để cung cấp một mô hình đầy đủ cụ thể cho từng gói.

Điều này dường như cung cấp tối đa de-khớp nối.

Tôi cũng quan tâm đến bất kỳ phản hồi nào về vấn đề này vì đây là kịch bản thiết kế chung.

Trân trọng.

+0

Xin chào m8, cảm ơn vì phản hồi. Đối với kịch bản cụ thể của tôi, repo tùy chỉnh là những gì tôi cần, và tôi đặt chúng trong một ModelBundle 'chia sẻ'. Các thực thể và thực thể kiểm tra và như vậy cũng đi đến đó. Tuy nhiên, tôi đang tạo ra một dịch vụ sẽ phải được chia sẻ, nhưng điều đó không liên quan gì đến mô hình của tôi (để gửi SMS, trong một trường hợp). Không chắc chắn làm thế nào để cấu trúc đó, nhưng tôi đang suy nghĩ cùng một dòng như bạn đang có. Tôi chắc chắn tôi sẽ đặt chúng trong một bó riêng biệt, nơi tất cả các dịch vụ đi mà có thể được chia sẻ. Bạn không chắc chắn nếu đây là con đường để đi? – Dieter

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