pilsniak/proophgen

安装: 3

依赖: 0

建议者: 0

安全: 0

星标: 8

关注者: 3

分支: 0

开放问题: 2

类型:application

0.1.11 2017-11-04 21:01 UTC

This package is not auto-updated.

Last update: 2024-09-23 06:17:58 UTC


README

GitHub (Pre-)Release Date Travis Coveralls github Packagist GitHub release Packagist GitHub last commit

开发者为什么喜欢CRUD?因为它可以轻松自动化相关工作。开发者为什么讨厌DDD/CQRS?样板。

使用这个小程序 proophgen 和单个15行的 yaml 文件,你可以生成包含 48个文件(带 phpspec 测试!)的项目并开始编码。不再需要样板。

你还可以使用单个命令创建你的值对象、命令和聚合根以及事件。

目录

示例

这是你的 yaml

idPolicy: Ramsey\Uuid\UuidInterface # or string (default value)
valueObjects:
  - Model\ValueObject\Mail
  - Model\ValueObject\Name
  - Model\ValueObject\Password
commands:
  - Model\Command\RegisterUser
  - Model\Command\LoginUser
aggregateRoots:
  Model\User:
    - !UserRegistered
  Model\Identity:
    - !EmailIdentityCreated
    - UserToIdentityAssigned
    - UserLogged

这是你要运行的命令

$ proophgen do

这里是你得到的结果(自v0.1.10起)

./src/Infrastructure/Identity/EventSourced.php                                                                                                      ✔  2042  21:06:28 
./src/Infrastructure/Identity/InMemory.php
./src/Infrastructure/User/EventSourced.php
./src/Infrastructure/User/InMemory.php
./src/Model/Command/LoginUser.php
./src/Model/Command/RegisterUser.php
./src/Model/CommandHandler/LoginUserHandler.php
./src/Model/CommandHandler/RegisterUserHandler.php
./src/Model/Identity/Event/EmailIdentityCreated.php
./src/Model/Identity/Event/UserLogged.php
./src/Model/Identity/Event/UserToIdentityAssigned.php
./src/Model/Identity/Exception/IdentityNotFound.php
./src/Model/Identity/Guard/EmailIdentityCreatedGuard.php
./src/Model/Identity/Guard/UserLoggedGuard.php
./src/Model/Identity/Guard/UserToIdentityAssignedGuard.php
./src/Model/Identity.php
./src/Model/IdentityRepository.php
./src/Model/User/Event/UserRegistered.php
./src/Model/User/Exception/UserNotFound.php
./src/Model/User/Guard/UserRegisteredGuard.php
./src/Model/User.php
./src/Model/UserRepository.php
./src/Model/ValueObject/Mail.php
./src/Model/ValueObject/Name.php
./src/Model/ValueObject/Password.php
./spec/Infrastructure/Identity/EventSourcedSpec.php
./spec/Infrastructure/Identity/InMemorySpec.php
./spec/Infrastructure/User/EventSourcedSpec.php
./spec/Infrastructure/User/InMemorySpec.php
./spec/Model/Command/LoginUserSpec.php
./spec/Model/Command/RegisterUserSpec.php
./spec/Model/CommandHandler/LoginUserHandlerSpec.php
./spec/Model/CommandHandler/RegisterUserHandlerSpec.php
./spec/Model/Identity/Event/EmailIdentityCreatedSpec.php
./spec/Model/Identity/Event/UserLoggedSpec.php
./spec/Model/Identity/Event/UserToIdentityAssignedSpec.php
./spec/Model/Identity/Exception/IdentityNotFoundSpec.php
./spec/Model/Identity/Guard/EmailIdentityCreatedGuardSpec.php
./spec/Model/Identity/Guard/UserLoggedGuardSpec.php
./spec/Model/Identity/Guard/UserToIdentityAssignedGuardSpec.php
./spec/Model/IdentitySpec.php
./spec/Model/User/Event/UserRegisteredSpec.php
./spec/Model/User/Exception/UserNotFoundSpec.php
./spec/Model/User/Guard/UserRegisteredGuardSpec.php
./spec/Model/UserSpec.php
./spec/Model/ValueObject/MailSpec.php
./spec/Model/ValueObject/NameSpec.php
./spec/Model/ValueObject/PasswordSpec.php

创建单个值对象

你需要运行那个命令

proophgen vo Model/ValueObject/FirstName

结果你应该看到类似以下的内容

Creating files:
[v] ./src/Model/ValueObject/FirstName.php
[v] ./spec/Model/ValueObject/FirstNameSpec.php

创建单个命令

你需要运行那个命令

proophgen c Model/Command/RemoveUser 

结果你应该看到类似以下的内容

Creating files:
[v] ./src/Model/Command/RemoveUser.php
[v] ./src/Model/CommandHandler/RemoveUserHandler.php
[v] ./spec/Model/Command/RemoveUserSpec.php
[v] ./spec/Model/CommandHandler/RemoveUserHandlerSpec.php

创建包含事件的单个聚合根

你需要运行那个命令

proophgen ar Model/Admin \!AdminCreated AdminRemoved AdminBlocked  

结果你应该看到类似以下的内容

Creating files:
[v] ./src/Model/Admin.php
[v] ./src/Model/AdminRepository.php
[v] ./src/Model/Admin/Exception/AdminNotFound.php
[v] ./src/Model/Admin/Event/AdminCreated.php
[v] ./src/Model/Admin/Guard/AdminCreatedGuard.php
[v] ./src/Model/Admin/Event/AdminRemoved.php
[v] ./src/Model/Admin/Guard/AdminRemovedGuard.php
[v] ./src/Model/Admin/Event/AdminBlocked.php
[v] ./src/Model/Admin/Guard/AdminBlockedGuard.php
[v] ./src/Infrastructure/Admin/InMemory.php
[v] ./src/Infrastructure/Admin/EventSourced.php
[v] ./spec/Model/AdminSpec.php
[v] ./spec/Infrastructure/Admin/EventSourcedSpec.php
[v] ./spec/Model/Admin/Exception/AdminNotFoundSpec.php
[v] ./spec/Infrastructure/Admin/InMemorySpec.php
[v] ./spec/Model/Admin/Event/AdminCreatedSpec.php
[v] ./spec/Model/Admin/Guard/AdminCreatedGuardSpec.php
[v] ./spec/Model/Admin/Event/AdminRemovedSpec.php
[v] ./spec/Model/Admin/Guard/AdminRemovedGuardSpec.php
[v] ./spec/Model/Admin/Event/AdminBlockedSpec.php
[v] ./spec/Model/Admin/Guard/AdminBlockedGuardSpec.php

标识符策略

默认情况下,proophgen 生成所有标识符为字符串。如果你想改变它,只需运行以下命令的变体

对于聚合根

proophgen ar --id-policy="Ramsey\Uuid\UuidInterface" Model/Admin \!AdminCreated AdminRemoved AdminBlocked

对于命令

proophgen c --id-policy="Ramsey\Uuid\UuidInterface" Model/Command/RemoveUser 

安装

使用 proophgen 有几种方法

1. 你可以下载 .phar 文件

前往 github 的发行页面 下载 proophgen.phar

mv ~/Downloads/proophgen.phar /usr/local/bin/proophgen
chmod +x /usr/local/bin/proophgen

2. 你可以使用docker

只需运行那个命令

docker run -v $(pwd):/var/www proophgen/proophgen 

3. Composer(不推荐)

你可以将 proophgen 直接添加到你的项目中作为 dev 依赖,但这样你的项目和 proophgen 将共享所有依赖,可能会发生一些冲突。

composer require --dev pilsniak/proophgen