monooso/unobserve

Mute and unmute Laravel observers at will.

v6.0.0 2024-03-20 11:03 UTC

README

Lint and Test Status Quality Score Coverage Latest Stable Version License

About Unobserve

When testing Laravel applications, we frequently need to "silence" events, so as not to trigger additional side-effects. Laravel's Event::fake method is useful, but muting a specific model observer is still problematic.

Unobserve takes care of that, making it easy to mute and unmute an observer at will.

Requirements and installation

Select the appropriate version of Unobserve from the following table.

Unobserve Laravel PHP
1.x ^5.8, ^6.0 ^7.2
2.x ^7.0 ^7.2.5
3.x ^8.0 ^7.3.0
4.x ^8.0 ^8.0.0
5.x ^9.0, ^10.0 ^8.0.0
6.x ^11.0 ^8.2.0

Install Unobserve using Composer:

composer require monooso/unobserve

Usage

First, add the CanMute trait to your observer class.

<?php

namespace App\Observers;

use Monooso\Unobserve\CanMute;

class UserObserver
{
    use CanMute;
}

You can now mute and unmute your observer as needed:

UserObserver::mute();
UserObserver::unmute();

Mute options

Mute all observer events:

UserObserver::mute();

Mute specific observer events:

UserObserver::mute('creating');
UserObserver::mute(['creating', 'created']);

Development

Unobserve is very stable at this point. If you have any feature ideas please open an issue before doing any work.

Here's how to set everything up for local development on Unobserve 1:

  1. Clone the repository.
  2. Install the dependencies by running composer install.
  3. Install the code quality tools by running composer install --working-dir=tools/php-cs-fixer.
  4. Set your Git hooks directory to .githooks by running git config core.hooksPath .githooks.

License

Unobserve is open source software, released under the MIT license.

Footnotes

  1. I'm assuming you know your way around PHP, and already have your environment set up.