PHPackages                             blessing/filter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. blessing/filter

ActiveLibrary

blessing/filter
===============

Filters API for designing plugin system.

v1.4.0(10mo ago)03.4k↓53.1%1MITPHPCI passing

Since Dec 27Pushed 10mo ago1 watchersCompare

[ Source](https://github.com/bs-community/filter)[ Packagist](https://packagist.org/packages/blessing/filter)[ RSS](/packages/blessing-filter/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (7)Used By (1)

filters
=======

[](#filters)

Filters API for designing and creating plugin system, within Laravel.

> We used this in Blessing Skin Server.

The "Filters API" is similar with Filters API of WordPress, but comes with different API. And this package is designed for Laravel, so it may not work if you use it without Laravel.

💿 Install
---------

[](#-install)

Run Composer:

```
composer require blessing/filter

```

🔨 Usage
-------

[](#-usage)

With Laravel's Auto-Discovery, you don't need to configure your Laravel application manually.

Currently this package doesn't provide Facade. You must get instance by using type-hint in your controllers or using global `resolve()` helper function.

For example:

```
use Blessing\Filter;

class MyController extends Controller
{
    public function home(Filter $filter)
    {
        //
    }
}
```

### Add a filter

[](#add-a-filter)

To add a filter for a specified hook, just call the `add` method:

```
$filter->add('hook_name', function ($value) {
    return $value;
});
```

Note that the filter handler must return a value; otherwise, the value after applied will be `null`.

You also can pass a class which has a public method called `filter` as handler.

```
class MyFilter
{
    public function filter($value)
    {
        return $value;
    }
}

$filter->add('hook_name', MyFilter::class);
// or
$filter->add('hook_name', 'MyFilter');
```

The class will be resolved from Laravel's service container, so you can use type-hint at the constructor of your class to resolve dependencies.

Additionally, you can specify the priority for your filter handler. Higher integer value indicates that it should come with higher priority.

Default priority is `20`.

```
$filter->add('hook_name', function ($value) {
    return $value;
}, 30);  // Higher than default priority.
```

### Apply a hook

[](#apply-a-hook)

You can call `apply` method to apply a hook:

```
$value = $filter->apply('hook_name', 'hi');
```

Then, the second argument you passed will be manipulated by filters.

Also, you can pass additional arguments as an array:

```
$value = $filter->apply('hook_name', 'hi', [$arg1, $arg2]);
```

Those additional arguments **won't** be manipulated by filters.

### Remove all filters

[](#remove-all-filters)

To remove all filters for a specified hook, just:

```
$filter->remove('hook_name');
```

### Totally...

[](#totally)

This is a full example:

```
$filter->add('hook_name', function ($value, $arg1, $arg2) {
    if ($arg1 === '...') {
        return $value;
    }

    return $value.'!';
});

$value = $filter->apply('hook_name', 'hi', ['abc', 'def']);
// You should get the text "hi!" here.
```

📄 License
---------

[](#-license)

MIT License (c) The Blessing Skin Team

###  Health Score

41

—

FairBetter than 88% of packages

Maintenance57

Moderate activity, may be stable

Popularity21

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 85.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~402 days

Recently: every ~486 days

Total

6

Last Release

313d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/91d034d624b0462568734c0dbba99eab43e23b5b1ed5009d5a24bbd4bdc7f8c1?d=identicon)[gplane](/maintainers/gplane)

![](https://www.gravatar.com/avatar/943d05ca6b368c3689810455068edf966efe57a4a3dea8a7cf335a2575110f83?d=identicon)[Asnxthaony](/maintainers/Asnxthaony)

---

Top Contributors

[![g-plane](https://avatars.githubusercontent.com/u/17216317?v=4)](https://github.com/g-plane "g-plane (12 commits)")[![Asnxthaony](https://avatars.githubusercontent.com/u/12845643?v=4)](https://github.com/Asnxthaony "Asnxthaony (1 commits)")[![tnqzh123](https://avatars.githubusercontent.com/u/16630630?v=4)](https://github.com/tnqzh123 "tnqzh123 (1 commits)")

---

Tags

laravelwordpressfilters

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/blessing-filter/health.svg)

```
[![Health](https://phpackages.com/badges/blessing-filter/health.svg)](https://phpackages.com/packages/blessing-filter)
```

###  Alternatives

[laravel/horizon

Dashboard and code-driven configuration for Laravel queues.

4.2k84.2M223](/packages/laravel-horizon)[illuminate/database

The Illuminate Database package.

2.8k52.4M9.3k](/packages/illuminate-database)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9682.1M97](/packages/roots-acorn)[tormjens/eventy

The WordPress filter/action system in Laravel

438912.9k16](/packages/tormjens-eventy)[spatie/laravel-prometheus

Export Laravel metrics to Prometheus

2651.3M6](/packages/spatie-laravel-prometheus)[harris21/laravel-fuse

Circuit breaker for Laravel queue jobs. Protect your workers from cascading failures.

3786.5k](/packages/harris21-laravel-fuse)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
