2016-10-13 80 views
2

我寫作系統遵循六邊形結構。我應該掌握什麼對象?

我在UseCase中分割了異步命令和同步查詢對象。

我src文件夾的樣子:

-src 
--Entity 
---Task.php 
--UseCase 
---Command 
----CreateTask 
-----CreateTaskUseCase.php 
-----CreateTaskCommand.php 

我的問題是:我可以/應該使用通過命令在構造函數發送的UseCase\Command\CreateTask\CreateTaskCommand

  • \Entity\Task
  • 數據創建UseCase\Command\CreateTask\Request\Task那會擁有所有需要的數據
  • only string/int/float

這是顯示問題的簡單示例。

現在,我使用的對象從域(Entiti\Task等) 在現實情況下,我有UseCase\Command\CreateProcess需要

  • UUID
  • 實例[ID,名稱]
  • 來源[NODE_ID,節點名,leaf_id,leaf_name]
  • 資源[ID,名稱,類型等正常類型人【名,姓氏]]

通過遵循DDD,Process是我的聚合。所有實體僅存在於構造過程(節點,葉子,資源,人員)。然後,我不想單獨的方式來創建其他實體,因爲這種方式符合我的業務邏輯。

由於這個問題,問題是:我應該選擇什麼?打破一些規則?

問題:

  • 與對象綁定命令從內域,將結合更高層更向芯。在覈心的任何變化,都會鏈所有層
  • 創建Request\*讓我很多類,但用命令的明確的方式,以及更多的工作作出反應 - 單元測試等
  • 只使用標準型(INT,字符串等。 )將使__counstruct有20個參數。我不想要多級數組,因爲不會清楚使用這個命令。

感謝您的幫助。

+1

Ddd主要是關於您的業務走過的旅程和結構。我懷疑他們談論的是一個用例/流程/任務結構,但更多的是關於一個人的事情。另請參閱valueetypes。捆綁參數 – Batavia

+1

你是對的,將刪除DDD標籤:) – timiTao

+0

回滾你的編輯,因爲你已經添加了相同的文字到你的問題和你的答案。 – kayess

回答

1

經過一段時間和經驗 - 最好的選擇是使用PHP的標準數據。最後,爲該命令創建對象是很好的選擇(第二種選擇),但這會耗費時間來創建類和測試。

永遠不要使用域名的東西 - 這是未來的巨大缺點。