so-lean / cleanprospecter
干净架构的 P.O.C.(Uncle Bob)
0.0.1
2018-06-24 08:48 UTC
Requires (Dev)
- phpunit/phpunit: ^7.0
- squizlabs/php_codesniffer: ^3.2
This package is not auto-updated.
Last update: 2024-09-29 05:41:53 UTC
README
Cleanprospecter
Cleanprospecter 是一个根据 Robert C. Martin 在干净架构的建议设计的 php 7.2 商业潜在客户应用程序。
使用 composer 将 cleanprospecter 添加到您的项目中。
$ composer require so-lean/cleanprospecter
在 github 这里 可以找到 symfony 4.1 的实现。
进展
将此范围视为 最小可行产品。
- 作为匿名用户,我想登录
- 作为主应用,我想刷新用户
- 作为勘探者,我想创建组织
- 作为勘探者,我想找到我的组织
- 作为勘探者,我想获取组织
- 作为勘探者,我想更新组织
- 作为勘探者,我想创建组织
- 作为用户,我想获取我的账户信息
- 作为用户,我想更新我的账户信息
- 作为用户,我想删除我的组织徽标
- 作为勘探者,我想创建潜在客户
- 作为勘探者,我想找到我的潜在客户
- 作为勘探者,我想创建电话事件
- 作为勘探者,我想创建预约事件
- 作为勘探者,我想创建电子邮件事件
- 作为勘探者,我想创建短信事件
- 作为勘探者,我想找到我的潜在客户
未来
- 标签
- 自动从邮箱、短信服务等导入事件...
- 电子邮件营销活动
干净架构 -业务规则作为简单的 composer 包。-
在Uncle Bob的这个演讲中有很好的解释
一个好的架构最大化了未做的决策数量
- UNCLE BOB
术语差异
为了澄清一些Uncle Bob的概念
- 交互器变为用例,位于 src/UseCase/UseCaseName,并从其名称中获取名称: 例如 FindMyOwnOrganizations
- 请求和响应是数据传输对象,位于同一位置: 例如 FindMyOwnOrganizationsRequest,FindMyOwnOrganizationsResponse
- 表示者接口(依赖反转)也是如此: 例如 FindMyOwnOrganizationsPresenter
- 网关不仅是数据库抽象,实体网关位于 src/Gateway/Entity
如何实现 cleanprospecter
干净架构使用依赖注入来构建用例。
1 您需要在主应用程序中实现所有网关
- 在 IOC 中构建用例
- 在外观中注册它
// in IOC //OrganizationGatewayImpl implements OrganizationGateway interface $organizationGateway = new OrganizationGatewayImpl(); $useCase = new GetOrganizationImpl($organizationGateway); //Create facade and register use case $facade = new UseCasesFacade(); $facade->addUseCase($useCase);
// in controller (or somewhere else) $request = new GetOrganizationRequest(7); //presenter implements GetOrganizationPresenter $presenter = new GetOrganizationPresenterImpl(); //all use case is accessible by their name $facade->getOrganization($request, $presenter);
一个用例可以说明它做什么
//... $useCase = new GetOrganizationImpl($organizationGateway); echo $useCase; //Display : "As prospector, I want to get organization"
开发者工具
先决条件
- docker
- docker-compose
所有常用命令行都可以通过 Makefile 访问。Make 创建一个基于官方 php alpine docker 图像(php 7.2.3)的 docker 图像,其中包含 xdebug 和全局 composer。
$ make
命令
make 命令