经过一番思考和考虑,我决定将我现有的应用程序目录结构重组为垂直切片方法,该应用程序当前是水平切片的(分层)。
为了匹配所需的结构,我在这个问题中更改了我的项目文件以匹配下面的链接示例并使事情变得清晰。
- Controllers [Based on Request Method, GET, POST, PUT, calls appropriate service method]
- ProductsController.php
- Data
- DAL [Data Access Layer - Specific Read / Write Queries]
- Products
- Mapper [Maps parameter array to object]
- ProductsMapper.php
- Model [Contains classes matching table structure]
- Product.php
- Service [Business Logic]
- ProductsService.php
- Provider [Database Connection Class]
- Database.php
因此,经过一些研究,我得出的结论是,如果我使用 Vertical Slices 对我的应用程序结构进行建模并找到一个清晰的示例,事情会变得更容易。
- Features
- Products
- AddFavoriteProduct
- AddFavoriteProductController.php
- AddFavoriteProductCommand.php
- AddFavoriteProductResponse.php
- AddFavoriteProductCommandHandler.php
- AddFavoriteProductContainer.js
- AddFavoriteProduct.js
- AddFavoriteProduct.css
- GetProductList
- GetProductListController.php
- GetProductListQuery.php
- GetProductListResponse.php
- GetProductListCommandHandler.php
- GetProductListContainer.js
- GetProductList.js
- GetProductList.css
我面临的问题是我将什么委托给这四个文件中的每一个。
我的大致理解如下。
控制器 - 处理请求并调用命令/查询,还是这个 CommandHandler?
命令/查询 - 这有插入/更新命令,或数据库查询,在我的情况下,这将通过像 Doctrine 这样的对象关系映射框架来促进
响应 - 将所需信息或命令状态结果以 JSON 形式返回给用户
CommandHandler - 不清楚这里有什么......
寻找一些示例片段,或一些澄清开始。描述四个组件中的每一个的功能会有所帮助。