cerpus/edlib-resource-kit-laravel

将 Edlib 资源套件与 Laravel 集成

v0.6.0 2022-12-08 14:18 UTC

README

codecov

Edlib 资源套件 与 Laravel 集成。

要求

  • PHP 8.0, 8.1 或 8.2
  • Laravel 8, 9 或 10
  • PSR-18 兼容的 HTTP 客户端(例如 Guzzle 7)
  • PSR-17 兼容的 HTTP 消息工厂(包含在 Guzzle 7 中)

安装

composer require cerpus/edlib-resource-kit-laravel

如果使用 Guzzle 6,您还需要一些适配器

composer require cerpus/edlib-resource-kit-laravel \
    http-interop/http-factory-guzzle \
    php-http/guzzle6-adapter

配置

首先发布配置

php artisan vendor:publish --provider="Cerpus\EdlibResourceKitProvider\EdlibResourceKitServiceProvider"

对于异步发布,需要配置 RabbitMQ。编辑 config/edlib-resource-kit.php,或提供匹配您基础设施的预期环境变量。

如果使用 cerpus/laravel-rabbitmq-pubsub,您可以重用其配置

<?php

return [
    'pub-sub' => Cerpus\PubSub\PubSub::class,
];

对于同步发布,只需提供以下配置

<?php

return [
    'synchronous-resource-manager' => true,
];

用法

自动发布资源

给定一个实现了 EdlibResource 的模型

use Cerpus\EdlibResourceKit\Contract\EdlibResource;
use Cerpus\EdlibResourceKitProvider\Traits\PublishToEdlib;
use Illuminate\Database\Eloquent\Model;

class Article extends Model implements EdlibResource
{
    use PublishToEdlib;
}

或一个实现了 ConvertableToEdlibResource 的模型

use Cerpus\EdlibResourceKit\Contract\EdlibResource;
use Cerpus\EdlibResourceKitProvider\Contract\ConvertableToEdlibResource;
use Cerpus\EdlibResourceKitProvider\Traits\PublishToEdlib;
use Illuminate\Database\Eloquent\Model;

class Article extends Model implements EdlibResource
{
    use PublishToEdlib;

    public function toEdlibResource(): EdlibResource
    {
        // Return your own data object
        return new ArticleEdlibResource(/* ... */);
    }
}

使用 PublishToEdlib 特性,Edlib 将在资源更改时被通知。

许可

此包根据 GNU 通用公共许可证 3.0 发布。有关更多信息,请参阅 LICENSE 文件。