robin-malfait / event-sourcing
一个事件源包
v3.0.3
2016-10-30 12:43 UTC
Requires
- php: >=5.5.0
- illuminate/console: ^5.3
- illuminate/database: ^5.3
- illuminate/support: ^5.3
- ramsey/uuid: ^3.5
Requires (Dev)
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
README
这是一个简单的EventSourcing包,您可以在项目中使用。该项目使用PSR2编写
安装
通过Composer
$ composer require robin-malfait/event-sourcing
使用方法
注册服务提供者
'providers' => [ ... \EventSourcing\Laravel\EventSourcingServiceProvider::class, ]
发布配置文件
php artisan vendor:publish --provider="EventSourcing\Laravel\EventSourcingServiceProvider"
配置文件看起来像这样
现在您可以调整一些配置
最后但同样重要的是,创建事件存储表
php artisan event-sourcing:table
从v1更新到v2
如果您仍在使用第一个版本,最好更新到版本2。我保证您在未来的问题会少一些。
在版本2中,我们让每个DomainEvent负责提供数据和接收数据。这些方法是
serialize();返回一个序列化数据的数组
deserialize(array $data);该方法有一个参数,数据基本上来自序列化方法。此方法也应返回当前事件的实例。
例如
<?php namespace App\Users\Events; use EventSourcing\Domain\DomainEvent; class UserWasRegistered implements DomainEvent { private $user_id; private $email; private $password; // Yes, this is encrypted public function __construct($user_id, $email, $password) { $this->user_id = $user_id; $this->email = $email; $this->password = $password; } /** * @return UserId */ public function getAggregateId() { return $this->user_id; } public function getMetaData() { return []; // Could be for example the logged in user, ... } /** * @return array */ public function serialize() { return [ 'user_id' => $this->user_id, 'email' => $this->email, 'password' => $this->password ]; } /** * @param array $data * @return mixed */ public static function deserialize(array $data) { return new static( $data['user_id'], $data['email'], $data['password'] ); } }
一旦您在事件中定义了每个序列化/反序列化方法,您就可以开始迁移过程。
在数据库中将 eventstore 重命名为 eventstore_backup
现在您可以在终端中运行以下命令
php artisan event-sourcing:table
这将创建eventstore,现在您应该能在数据库中看到两个表
eventstore_backup=> 包含所有数据的旧表eventstore=> 您的新 空 表
我还编写了一个辅助方法来进行迁移。
php artisan event-sourcing:1to2 eventstore_backup eventstore
或者您也可以直接运行以下命令,因为 eventstore_backup 和 eventstore 是默认的。
php artisan event-sourcing:1to2
测试
$ composer test
贡献
请参阅CONTRIBUTING以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件malfait.robin@gmail.com联系,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。