aambr/phpchain

该包的最新版本(1.1.1)没有可用的许可证信息。

1.1.1 2016-10-28 12:13 UTC

This package is auto-updated.

Last update: 2024-09-08 23:02:33 UTC


README

一组类,帮助创建步骤链,以最小化领域逻辑中的混乱。

安装

composer require aambr/phpchain

快速开始

$dispatcher = new ChainDispatcher($dependencyInjectionContainer);
$dispatcher->chain('user.register')->define([
  'Steps\CreateUserStep', Steps\CreateProfileStep::class, 'sendWelcomeEmail'
]); // all of these will be resolved by dependency container unless 
    // there is a concrete ChainStep object ready
    
$dispatcher->chain('user.register')->dispatch()->execute(new \ArrayObject([
  'username' => 'valid-username',
  'email' => 'valid@email.com'
]));

ChainDispatcher 接受任何扩展 \ArrayObject 的依赖注入容器,以解决每个步骤的依赖。

分而治之

目标是把复杂的领域逻辑分解成可重用的单个步骤。通过继承 ChainStep 并在 process(\ArrayObject $input) 中实现逻辑来创建自己的步骤。

步骤间共享变量

步骤可以通过修改 $input 键来相互共享变量,这是因为我们传递的是 \ArrayObject 实例的引用,而不是通过值传递的数组。例如,在 CreateUserStep 成功操作之后,可以设置 $input['user'] = $createdUser,然后可以被 sendWelcomeEmail 使用。