簡體   English   中英

如何在PHP中實現多層架構

[英]How To Implement Multi Layered Architecture in PHP

我已經確定了在我的應用程序中實現的以下層。 根據我的知識,多層架構更適合企業應用程序。

  • 表達層
  • 業務層
  • 數據訪問層
  • 服務層

我選擇了Symfony2作為應用程序中使用的框架。 Symfony2內置了MVC架構。 並且上述層存在如下。

  • 表示層=>控制器和視圖
  • 業務層,服務層=>模型
  • 數據訪問層=>也使用模型,但使用Doctrine。

模型由業務層,數據訪問層,服務層組成。 請參閱下面的圖片,該圖片借鑒了Martin Fowler的書“企業應用程序架構模式”

服務層圖,帶有同心圓

我的問題是,

有沒有辦法將模型分離到單獨的業務層,數據訪問層,服務層? 如何在PHP中實現多層架構? 我應該使用其他一些框架(如果它只支持分層架構)?

更新

以下鏈接很有幫助

如何在MVC中構建模型?

如何使用PHP構建n層Web架構?

在MVC和3層或N層架構中開發網站有什么區別?

MVC應用程序。 多層架構如何適應?

在MVC架構中實現服務層

使用Symfony PHP實現3層架構

如果你真的想要嘗試制作MVC靈感的東西,那么你唯一的選擇就是Synfony和Zend。 其他人只是悲傷的Rails克隆,實現了PAC的一些混蛋。 而Sf2.x似乎更好的兩個之一...但這就像指出補習班中最聰明的孩子。
除非你能夠並願意制作自己的框架,否則Sf2.x將是你最好的選擇。

我認為這里的主要問題是誤解了MVC中的“模型”。 模型是一個層,而不是任何特定的類或對象。 在福勒的書中,“ MVC模型 ”將三個同心圓組合在一起。

你在MVC中基本上有兩個主要層:模型層和表示層。 表示層通過服務與模型層交互,使您可以抽象底層域業務邏輯。

不要將它與“ 域模型 ”混淆。 域模型是描述客戶業務中用於創建應用程序的所有知識和專業知識的想法。 通常它將表示為單獨的域對象和所述對象的交互。

此外,這張照片有點誤導。 數據抽象層(通常實現為數據映射器的集合)不是域模型的低級結構。 域對象和存儲抽象都是按服務使用(直接或通過存儲庫和工作單元)。 它被稱為“應用程序邏輯”,是服務的直接責任。

底線:不,你不需要選擇一些不同的框架。 您只需要了解有關應用程序架構的更多信息。 您應該閱讀企業應用程序架構模式 ..這將是一個很好的起點。

我的2美分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM