r4nkt / laravel-resource-tidier
一组简单而具有偏见的类,允许对各种用户资源进行可配置的整理。
Requires
- php: ^8.0
- illuminate/support: ^8.0
- spatie/laravel-package-tools: ^1.4.3
Requires (Dev)
- brianium/paratest: ^6.2
- nunomaduro/collision: ^5.3
- orchestra/testbench: ^6.15
- phpunit/phpunit: ^9.3
- spatie/laravel-ray: ^1.9
- vimeo/psalm: ^4.4
README
一组简单而具有偏见的类,允许对各种用户资源进行可配置的整理。它允许您配置“整理器”,以找到需要整理的资源,清除它们,通知资源所有者,并最终执行整理任务。它还允许在需要时“取消标记”资源。
这个包的开发是为了满足一个需求,但它也受到了Freek和他关于移除不活跃用户和团队的博客文章的启发。
还应注意的是,它是另一个r4nkt 包的基础,该包可能对您的项目有用,或者可以作为如何使用laravel-resource-tidier的示例。
最后,重要的是指出,这个包受益于Spatie的Laravel 包骨架包。
安装
您可以通过 composer 安装此包
composer require r4nkt/laravel-resource-tidier
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="R4nkt\ResourceTidier\ResourceTidierServiceProvider" --tag="laravel-resource-tidier-config"
这是已发布配置文件的内容
<?php use R4nkt\ResourceTidier\Actions\CullResources; use R4nkt\ResourceTidier\Actions\HandleResources; use R4nkt\ResourceTidier\Actions\NullFinder; use R4nkt\ResourceTidier\Actions\NullMarker; use R4nkt\ResourceTidier\Actions\NullNotifier; use R4nkt\ResourceTidier\Actions\NullTask; use R4nkt\ResourceTidier\Actions\NullUnmarker; return [ /** * Tidiers: A tidier is a simple class that tidies a given resource in two * steps: * - First, it culls resources by finding those that match specific * criteria, marking them, and notifying the resource owner of some * impending action(s). * - Second, it performs whatever tidying handler has been defined on the * marked resources. * * Required parameters: * - culler * - handler */ 'tidiers' => [ 'null-resource-tidier' => [ 'culler' => 'null-resource-culler', 'unmarker' => 'null-resource-unmarker', 'handler' => 'null-resource-handler', ], ], /** * Cullers find specific resources, mark them, and notify their owners of * some impending handler(s). * * Required parameters: * - class * - params: * - finder * - marker * - notifier * - unmarker */ 'cullers' => [ 'null-resource-culler' => [ 'class' => CullResources::class, /** @todo Make optional...? */ 'params' => [ 'finder' => 'null-resource-finder', 'marker' => 'null-resource-marker', 'notifier' => 'null-resource-notifier', ], ], ], /** * Handlers, when executed, find resources having certain attributes and * then perform some sort of task on/with them. * * Required parameters: * - class * - params: * - finder * - task */ 'handlers' => [ 'null-resource-handler' => [ 'class' => HandleResources::class, /** @todo Make optional...? */ 'params' => [ 'finder' => 'null-resource-finder', 'task' => 'null-resource-task', ], ], ], /** * Finders find resources that meet certain criteria, either for culling or * for handling. * * Required parameters: * - class * * Optional parameters: * - params * - <custom param 1> * - <custom param 2> * - <custom param ...> * - <custom param n> */ 'finders' => [ 'null-resource-finder' => [ 'class' => NullFinder::class, 'params' => [ 'foo' => 'bar', ], ], ], /** * Markers mark a given resource as having been culled. The idea is that * enough information is stored to allow the handler's finder to * successfully find any marked resources. * * Required parameters: * - class * * Optional parameters: * - params * - <custom param 1> * - <custom param 2> * - <custom param ...> * - <custom param n> */ 'markers' => [ 'null-resource-marker' => [ 'class' => NullMarker::class, 'params' => [ 'foo' => 'bar', ], ], ], /** * Notifiers are used to notify a resource owner that the resource has been * culled and that some action will take place. * * Required parameters: * - class * * Optional parameters: * - params * - <custom param 1> * - <custom param 2> * - <custom param ...> * - <custom param n> */ 'notifiers' => [ 'null-resource-notifier' => [ 'class' => NullNotifier::class, 'params' => [ 'foo' => 'bar', ], ], ], /** * Tasks are executed for each culled resource during the handling stage of * the tidying process. * * Required parameters: * - class * * Optional parameters: * - params * - <custom param 1> * - <custom param 2> * - <custom param ...> * - <custom param n> */ 'tasks' => [ 'null-resource-task' => [ 'class' => NullTask::class, 'params' => [ 'foo' => 'bar', ], ], ], /** * Unmarkers are meant to undo whatever the related marker has done, * effectively removing a given resource from the group of culled * resources. * * Required parameters: * - class * * Optional parameters: * - params * - <custom param 1> * - <custom param 2> * - <custom param ...> * - <custom param n> */ 'unmarkers' => [ 'null-resource-unmarker' => [ 'class' => NullUnmarker::class, 'params' => [ 'foo' => 'bar', ], ], ], ];
使用方法
要获取一个已注册的整理器,您可以使用整理器工厂,如下所示
use R4nkt\ResourceTidier\Support\Factories\TidierFactory; $tidier = TidierFactory::make('my-resource-tidier');
然后,您可以通过调用 cull() 来清除特定的整理器资源
$tidier->cull();
您还可以通过调用 handle() 来整理清除的资源
$tidier->handle();
最后,您可以通过调用 unmark() 并传入单个资源来取消标记清除的资源
$tidier->unmark($culledResource);
它做了什么?
整理器是一个简单的类,提供整理资源的方式
- 首先,它会清除满足特定要求的任何资源。每个清除的资源都会被标记为需要整理,并且会通知资源所有者。
- 其次,它允许取消标记之前已标记的单个资源。
- 最后,它执行实际的整理工作。
一个示例整理器可能是针对那些尚未验证电子邮件地址的注册用户。清除将识别这些用户并将它们标记为删除。将向资源所有者(即用户本人)发送通知,告知他们的账户将被删除,因为与他们的账户关联的电子邮件尚未验证。如果他们在被删除之前验证了他们的电子邮件地址,那么它们将被“取消标记”。但是,如果未及时采取行动,则未经验证的用户账户将被删除。
整理器
可以在配置文件中按名称注册整理器,并且必须标识三个项目
cullerunmarkerhandler
清除器
清除器的任务是找到满足某些条件的资源,将它们标记为清除,并通知单个资源所有者。
清除器可以在配置文件中按名称注册,并且必须标识三个参数
findermarkernotifier
可选地,可以提供一个实现R4nkt\ResourceTidier\Actions\Contracts\CullsResources接口的class。
取消标记器
取消标记器的任务是取消标记之前已标记的单个资源。
去标记器可以通过名称在配置文件中进行注册,并且必须标识一个实现了 R4nkt\ResourceTidier\Actions\Contracts\UnmarksResource 的 class。
可选地,可以提供去标记器需要的任何 params。
处理器
处理器的任务是处理任何被清理的资源。
处理器可以通过名称在配置文件中进行注册,并且必须标识以下参数:
finder任务
可选地,可以提供一个实现了 R4nkt\ResourceTidier\Actions\Contracts\HandlesResources 的 class。
查找器
查找器的任务是查找资源。它们被清理器和处理器使用,但执行的是相同的一般功能。对于清理器,它们是用来查找应该被清理的资源。对于处理器,它们是用来查找应该被整理的清理资源。
查找器可以通过名称在配置文件中进行注册,并且必须标识一个实现了 R4nkt\ResourceTidier\Actions\Contracts\FindsResources 的 class。
可选地,可以提供查找器需要的任何 params。
标记器
标记器的任务是标记单个资源已被清理。
标记器可以通过名称在配置文件中进行注册,并且必须标识一个实现了 R4nkt\ResourceTidier\Actions\Contracts\MarksResources 的 class。
可选地,可以提供标记器需要的任何 params。
通知器
通知器的任务是通知资源所有者他们的资源已被清理,并且可能将要采取某种行动。
通知器可以通过名称在配置文件中进行注册,并且必须标识一个实现了 R4nkt\ResourceTidier\Actions\Contracts\NotifiesResourceOwner 的 class。
可选地,可以提供通知器需要的任何 params。
任务
任务的任务是整理单个资源。
任务可以通过名称在配置文件中进行注册,并且必须标识一个实现了 R4nkt\ResourceTidier\Actions\Contracts\ExecutesResourceTask 的 class。
可选地,可以提供通知器需要的任何 params。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
有关详细信息,请参阅贡献指南。
安全漏洞
请审查我们的安全策略以了解如何报告安全漏洞。
鸣谢
许可
MIT 许可证 (MIT)。请参阅许可文件以获取更多信息。