renoki-co/laravel-chained-jobs-shared-data

该包已被废弃且不再维护。未建议替代包。

在 Laravel 中在链式作业之间共享数据。

1.1.0 2020-09-06 18:50 UTC

This package is auto-updated.

Last update: 2020-12-05 13:44:46 UTC


README

CI codecov StyleCI Latest Stable Version Total Downloads Monthly Downloads License

链式作业共享数据是一个帮助您在链式作业之间共享一些数据(通常是数组)的包。

🤝 支持

Renoki Co. 在 GitHub 上的目标是向世界带来许多开源项目和有用的项目。每天开发和维护项目是一项艰苦的工作,尽管如此,我们仍然热爱它。

如果您在日常工作中使用您的应用程序,在演示中,爱好项目或甚至学校项目中,请分享一些关于我们工作的好评或赞助我们的工作。好评会触动我们的脉轮和氛围,而赞助将使开源项目保持活力。

🚀 安装

您可以通过 composer 安装此包

composer require renoki-co/laravel-chained-jobs-shared-data

🙌 使用

您只需用此包提供的 traits 替换默认作业的 DispatchableQueueable traits。

// use Illuminate\Bus\Queueable;
// use Illuminate\Foundation\Bus\Dispatchable;
use RenokiCo\ChainedJobsSharedData\Traits\Dispatchable;
use RenokiCo\ChainedJobsSharedData\Traits\Queueable;

class MyJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    // the rest of job here
}

用例

主要用例是在链式作业之间共享一些数据,同时能够修改它并在后续作业中检索之前的修改。

CreateUser::withChain([
    new CreateApiKey,
    new MakeTestApiCall,
])->dispatch();

从表面上看,CreateApiKeyMakeTestApiCall 是依赖于 CreateUser 的作业。

如果不使用此包的 traits,唯一的解决方案就是在 CreateUser 作业中触发 CreateApiKey,然后触发下一个,再触发下一个,等等,最终你会得到难以管理和调试的糟糕代码。

如果所有作业类都使用之前提到的 traits,那么拥有一些共享数据将简化作业

// CreateUser.php

public function handle()
{
    $user = $this->createUser();

    $this->sharedData['user'] = $user;
}
// CreateApiKey.php

public function handle()
{
    $apiKey = $this->createApiKeyForUser($this->sharedData['user']);

    $this->sharedData['api_key'] = $apiKey;
}
// MakeTestApiCall.php

public function handle()
{
    $this->makeApiCall(
        $this->sharedData['user'],
        $this->sharedData['api_key'],
    );
}

🐛 测试

vendor/bin/phpunit

🤝 贡献

请参阅 CONTRIBUTING 以获取详细信息。

🔒 安全性

如果您发现任何与安全性相关的问题,请通过电子邮件 alex@renoki.org 而不是使用问题跟踪器。

🎉 致谢