binary-cats / fireable-attribute-events
Observe and trigger events based on attributes changes
Requires
- php: ^8.2
- illuminate/contracts: ^11.0|^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1
- orchestra/testbench: ^9.0|^10.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^2.0||^3.0
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
Suggests
- binary-cats/laravel-mailgun-webhooks: Handle Mailgun webhooks in your Laravel application
- binary-cats/laravel-rbac: Laravel 11 enum-backed RBAC extension of spatie/laravel-permission
This package is auto-updated.
Last update: 2025-02-19 15:33:39 UTC
README
Fireable Attribute Events
Observe and trigger events based on Eloquent model attributes changes
Installation
You can install the package via Composer:
composer require binary-cats/fireable-attribute-events
Usage
Add the FireableAttributes
Trait to Your Model:
In any Eloquent model where you want to fire events on attribute changes,
use the FireableAttributes
trait and define a fireableAttributes
array:
use App\Events\OrderStatusChanged; use App\Events\OrderMarkedHighPriority; use App\Events\OrderMarkedUrgent; use BinaryCats\FireableAttributeEvents\FireableAttributes; use Illuminate\Database\Eloquent\Model; class Order extends Model { use FireableAttributes; protected array $fireableAttributes = [ 'status' => OrderStatusChanged::class, 'priority' => [ 'high' => OrderMarkedHighPriority::class, 'urgent' => \OrderMarkedUrgent::class, ], ]; }
- Direct mapping: If status changes, it fires OrderStatusChanged.
- Value-based mapping: If priority changes to 'high', it fires OrderMarkedHighPriority; if 'urgent', it fires OrderMarkedUrgent.
Each event should accept the model as a constructor parameter.
Events Fire Automatically When Attributes Change.
Once a model using FireableAttributes
is updated, the package will automatically dispatch the corresponding event:
$order = Order::find(1); $order->update(['status' => 'shipped']); // 🚀 Fires OrderStatusChanged event $order->update(['priority' => 'urgent']); // 🚀 Fires OrderMarkedUrgent event
Testing
vendor/bin/pest
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email cyrill.kalita@gmail.com instead of using issue tracker.
Postcardware
You're free to use this package, but if it makes it to your production environment we highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using.
Credits
Support us
Binary Cats is a webdesign agency based in Illinois, US.
License
The MIT License (MIT). Please see License File for more information.