rdcstarr/superpower-events 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

rdcstarr/superpower-events

Composer 安装命令:

composer require rdcstarr/superpower-events

包简介

Model lifecycle events architecture for Laravel: 6 generic events + 6 listener traits, dispatched automatically via reflection on handleModel().

README 文档

README

Model lifecycle events architecture for Laravel — six generic events (ModelCreating/Created/Updating/Updated/Deleting/Deleted) dispatched automatically by the DispatchesModelEvents trait, with companion listener traits that filter by model type via reflection on handleModel().

Install

composer require rdcstarr/superpower-events

Usage

1. Add the trait to your model

use Rdcstarr\SuperpowerEvents\Concerns\DispatchesModelEvents;

class User extends Model
{
    use DispatchesModelEvents;
}

The trait boots automatically via bootDispatchesModelEvents() and registers Eloquent hooks for all six lifecycle events.

2. Create a listener using a companion trait

use Rdcstarr\SuperpowerEvents\Concerns\ModelCreated;

class AssignUserUuid
{
    use ModelCreated;

    protected function handleModel(User $user): void
    {
        // Called only for User models — other model types are filtered
        // automatically by reflecting on the parameter type of handleModel().
        $user->uuid = Str::uuid();
        $user->saveQuietly();
    }
}

Available listener traits (one per lifecycle hook):

Trait Event fired
Concerns\ModelCreating before INSERT
Concerns\ModelCreated after INSERT
Concerns\ModelUpdating before UPDATE
Concerns\ModelUpdated after UPDATE
Concerns\ModelDeleting before DELETE
Concerns\ModelDeleted after DELETE

Each trait provides a typed handle(EventClass $event) method that filters by the model type declared on your handleModel() parameter. No manual instanceof check, no $listen array — Laravel 11+ auto-discovers the listener from the typed handle() signature.

3. Pre-save mutations

Pre-save listeners (ModelCreating / ModelUpdating / ModelDeleting) receive the model before the write — mutations applied inside handleModel() persist in the same INSERT/UPDATE:

use Rdcstarr\SuperpowerEvents\Concerns\ModelCreating;

class SlugifyPost
{
    use ModelCreating;

    protected function handleModel(Post $post): void
    {
        $post->slug = Str::slug($post->title);
    }
}

Personal toolkit — no support guarantees.

统计信息

  • 总下载量: 1
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-05-27

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固