blessing/filter 问题修复 & 功能扩展

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

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

blessing/filter

最新稳定版本:v1.4.0

Composer 安装命令:

composer require blessing/filter

包简介

Filters API for designing plugin system.

README 文档

README

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

Run Composer:

composer require blessing/filter

🔨 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

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

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

To remove all filters for a specified hook, just:

$filter->remove('hook_name');

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

MIT License (c) The Blessing Skin Team

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-12-27