cerpus / edlib-resource-kit-laravel
Integrate Edlib Resource Kit with Laravel
Requires
- php: 8.0.*|8.1.*|8.2.*
- cerpus/edlib-resource-kit: ^0.3|^0.4|^0.5
- cerpus/pubsub: ^1.0
- illuminate/support: ^8.0|^9.0
- php-http/discovery: ^1.14
- psr/http-client-implementation: ^1.0
- psr/http-factory-implementation: ^1.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.0
- orchestra/testbench: ^6.0|^7.0
This package is auto-updated.
Last update: 2024-09-21 14:54:52 UTC
README
Integrates Edlib Resource Kit with Laravel.
Requirements
- PHP 8.0, 8.1, or 8.2
- Laravel 8, 9, or 10
- A PSR-18 compatible HTTP client (e.g. Guzzle 7)
- PSR-17 compatible HTTP message factories (included with Guzzle 7)
Installation
composer require cerpus/edlib-resource-kit-laravel
If using Guzzle 6, you will also need some adapters:
composer require cerpus/edlib-resource-kit-laravel \ http-interop/http-factory-guzzle \ php-http/guzzle6-adapter
Configuration
First publish the configuration:
php artisan vendor:publish --provider="Cerpus\EdlibResourceKitProvider\EdlibResourceKitServiceProvider"
For asynchronous publishing, it is required to configure RabbitMQ. Edit
config/edlib-resource-kit.php
, or provide the expected environment variables
to match your infrastructure.
If using cerpus/laravel-rabbitmq-pubsub, you can reuse its configuration:
<?php return [ 'pub-sub' => Cerpus\PubSub\PubSub::class, ];
For synchronous publishing, it is sufficient to provide the following config:
<?php return [ 'synchronous-resource-manager' => true, ];
Usage
Automatic publishing of resources
Given a model that implements EdlibResource
:
use Cerpus\EdlibResourceKit\Contract\EdlibResource; use Cerpus\EdlibResourceKitProvider\Traits\PublishToEdlib; use Illuminate\Database\Eloquent\Model; class Article extends Model implements EdlibResource { use PublishToEdlib; }
Or a model that implements 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(/* ... */); } }
With the PublishToEdlib
trait used, Edlib will now be notified upon changes to
the resource.
License
This package is released under the GNU General Public License 3.0. See the
LICENSE
file for more information.