blessing / 过滤器
用于设计插件系统的过滤器API。
v1.3.0
2023-05-30 04:45 UTC
Requires
- illuminate/contracts: ^6 || ^7 || ^8 || ^9 || ^10
- illuminate/support: ^6 || ^7 || ^8 || ^9 || ^10
Requires (Dev)
- illuminate/container: ^6 || ^7 || ^8 || ^9 || ^10
- phpunit/phpunit: ~9.0
README
用于设计和创建Laravel中的插件系统的过滤器API。
我们在祝福皮肤服务器中使用了这个。
"过滤器API"与WordPress的过滤器API类似,但提供不同的API。此包是为Laravel设计的,因此如果您不在Laravel环境中使用它,可能无法正常工作。
💿 安装
运行Composer
composer require blessing/filter
🔨 使用方法
利用Laravel的自动发现功能,您无需手动配置Laravel应用程序。
目前此包不提供Facade。您必须通过在控制器中使用类型提示或使用全局resolve()
辅助函数来获取实例。
例如
use Blessing\Filter; class MyController extends Controller { public function home(Filter $filter) { // } }
添加过滤器
要为指定的钩子添加过滤器,只需调用add
方法
$filter->add('hook_name', function ($value) { return $value; });
请注意,过滤器处理程序必须返回一个值;否则,应用后的值将为null
。
您还可以传递一个具有名为filter
的公共方法的类作为处理程序。
class MyFilter { public function filter($value) { return $value; } } $filter->add('hook_name', MyFilter::class); // or $filter->add('hook_name', 'MyFilter');
该类将从Laravel的服务容器中解析出来,因此您可以在类的构造函数中使用类型提示来解析依赖项。
此外,您还可以指定过滤器处理程序的优先级。更大的整数值表示它应该具有更高的优先级。
默认优先级为20
。
$filter->add('hook_name', function ($value) { return $value; }, 30); // Higher than default priority.
应用钩子
您可以通过调用apply
方法来应用钩子
$value = $filter->apply('hook_name', 'hi');
然后,您传递的第二个参数将受过滤器的影响。
您还可以传递额外的参数作为数组
$value = $filter->apply('hook_name', 'hi', [$arg1, $arg2]);
这些额外参数不会受过滤器的影响。
移除所有过滤器
要为指定的钩子移除所有过滤器,只需
$filter->remove('hook_name');
完全...
这是一个完整的示例
$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.
📄 许可证
MIT许可证 (c) 祝福皮肤团队