pilsniak / proophgen
0.1.11
2017-11-04 21:01 UTC
Requires
- php: ^7.1
- gossi/php-code-generator: ^0.5.0
- league/flysystem: ^1.0
- symfony/console: ^3.3
- symfony/yaml: ^3.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.7
- leanphp/phpspec-code-coverage: ^4.0
- phpspec/phpspec: ^4.1
- satooshi/php-coveralls: ^1.0
README
开发者为什么喜欢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