so-lean/cleanprospecter

干净架构的 P.O.C.(Uncle Bob)

0.0.1 2018-06-24 08:48 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:41:53 UTC


README

PR CI maintanibility coverage

Cleanprospecter

Cleanprospecter 是一个根据 Robert C. Martin 在干净架构的建议设计的 php 7.2 商业潜在客户应用程序。

使用 composer 将 cleanprospecter 添加到您的项目中。

 $ composer require so-lean/cleanprospecter

在 github 这里 可以找到 symfony 4.1 的实现。

进展

将此范围视为 最小可行产品

  • 作为匿名用户,我想登录
  • 作为主应用,我想刷新用户
  • 作为勘探者,我想创建组织
  • 作为勘探者,我想找到我的组织
  • 作为勘探者,我想获取组织
  • 作为勘探者,我想更新组织
  • 作为勘探者,我想创建组织
  • 作为用户,我想获取我的账户信息
  • 作为用户,我想更新我的账户信息
  • 作为用户,我想删除我的组织徽标
  • 作为勘探者,我想创建潜在客户
  • 作为勘探者,我想找到我的潜在客户
  • 作为勘探者,我想创建电话事件
  • 作为勘探者,我想创建预约事件
  • 作为勘探者,我想创建电子邮件事件
  • 作为勘探者,我想创建短信事件
  • 作为勘探者,我想找到我的潜在客户

未来

  • 标签
  • 自动从邮箱、短信服务等导入事件...
  • 电子邮件营销活动

干净架构 -业务规则作为简单的 composer 包。-

The Clean Architecture

在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 命令