2011-09-21 74 views
14

我們正在創建一個監視某些資產的SaaS。這意味着它需要數據,將其保存並顯示在Web界面中。如何與多個項目共享Symfony2模型

對於這一點,我們有我們與/創建了幾個部件正在向Symfony2的:

  • 一個前端Web應用程序,用戶可以查看他們的數據
  • 後端管理Web應用程序,在那裏我們創建新的顯示器,用戶等
  • 的API
  • 從隊列中檢索接收到的數據,並把它在我們的數據庫中(這是現在一個單獨的腳本,但我想這返工作爲的應用由cron調用的Symfony命令)

所有這四種應用共用同一個模型:我們主要的數據庫保存所有用戶,顯示器和數據。

我的問題是:我應該如何在Symfony2中構建這些項目

  1. 我是否創建了一個獨立的包,它包含我的數據庫的實體,並讓這四個項目包含這些實體並與它們一起工作?
  2. 我可以在我的Symfony應用程序文件夾中創建一個'model'目錄,該目錄由我的/ src目錄中的所有包使用?
  3. 一些其他更乾淨的方法來做到這一點?

選項1似乎有點奇怪,因爲根據我的理解,捆綁包需要路由,視圖,控制器等。僅將它用於實體會有點奇怪。

選項2看起來沒問題,因爲/ app文件夾對於/ src文件夾中的所有內容(因爲例如參數也駐留在此處)被認爲是「共享」。但是,這裏沒有「模型」文件夾,我不確定應該有什麼?

我知道Symfony 2已經很少有'最佳實踐'了,因爲它是全新的。但我想看看在你看來,是否有其他做法比其他做法更可取。

歡迎任何反饋意見。 由於提前,

迪特

回答

6

什麼我目前做的是第一個選項:爲您的實體單獨的包。 這就是我存儲固定裝置,實體,表單和實體相關測試的地方。

一束確實需要有路由,控制器,視圖等。我確實遇到過一個藍圖捆綁,並且它是所有與它船藍圖CSS資源,使他們能夠輕鬆地在項目重用。

至於將模型添加到應用程序目錄...我不喜歡那樣。我將app目錄看作所有配置應該在的地方。即使您可以覆蓋app/Resources下的視圖,但每當我想重寫某些內容時,我都會創建一個新的包。

+0

這就是我需要知道的:)謝謝! – Dieter

1

我自己並沒有在真實世界的symfony2應用程序中使用這種技術 - 但它是一個指針,當你問任何反饋。

service container似乎是Smyfony2方法使服務在全球範圍內可用。所以在你的情況下,模型訪問對象將被定義爲在提供的鏈接中討論的服務,然後可以從任何包中使用。

現在服務對象在哪個包中?我們可以將它們放入一個單獨的包中,因爲它們在其他包中共享。但是,我假設該模型對於所有包都不完全對稱,因此我們可以將共享模型放入單獨的包中,並將包專用實體放入包中。然後,上面鏈接中討論的注射技術可用於提供特定於每個束的完整模型。

這似乎提供了最大的去耦。

我對這方面的任何反饋都很感興趣,因爲這是一種常見的設計方案。

問候。

+0

嗨m8,感謝您的反饋。對於我的特定場景,自定義回購是我需要的,我把它們放在一個'共享'模型捆綁中。實體和實體測試等也到那裏去了。但是,我正在創建一個必須共享的服務,但這與我的模型(在一種情況下發送短信)無關。還不確定如何構建,但我正在和你一樣思考。我很確定我會把它們放在一個單獨的包中,在那裏可以共享所有的服務。不知道這是否是要走的路? – Dieter

相關問題