cherrypulp / laravel-action-filter
Laravel 动作过滤器
Requires
- php: >=7.0
- jeremeamia/superclosure: ^2.4
This package is not auto-updated.
Last update: 2024-09-25 01:45:44 UTC
README
一个辅助工具,用于在 Laravel/PHP 项目中创建类似于 WordPress 的动作过滤器。由 https://github.com/tormjens/Eventy 分支而来。
安装
通过 composer 安装
composer require cherrypulp/laravel-action-filter
注册服务提供者
注意!如果你使用 laravel>=5.5 并启用了包自动发现功能,以下步骤是可选的。
将服务提供者添加到 config/app.php
文件中的 providers
部分
Cherrypulp\ActionFilter\ServiceProvider::class,
注册门面
在 config/app.php
文件中的 aliases
部分注册包门面
Cherrypulp\ActionFilter\Facades\ActionFilter::class,
使用方法
动作
你可以在代码的任何地方创建一个新动作,如下所示
use Cherrypulp\ActionFilter\Facades\Events as ActionFilter;
ActionFilter::action('my.hook', 'awesome');
第一个参数是钩子的名称;你将在稍后监听钩子时使用此参数。所有后续参数都作为参数传递给动作。这些可以是任何你想要的。例如,你可能想通知监听器这个动作附加到某个模型上。然后,你可以将其作为其中一个参数传递。
要监听你的钩子,你需要附加监听器。这些最好添加到你的 AppServiceProvider
的 boot()
方法中。
例如,如果你想监听上面的钩子,你可以这样做
ActionFilter::addAction('my.hook', function($what) {
echo 'You are '. $what;
}, 20, 1);
再次,第一个参数必须是钩子的名称。第二个参数是回调函数。这可以是闭包、指向应用程序容器中类的字符串(MyNamespace\Http\Listener@myHookListener
)、数组回调([$object, 'method']
)或全局注册的函数 function_name
。第三个参数是钩子的优先级。数字越小,执行越早。第四个参数指定监听器接受的参数数量。
过滤器
过滤器与动作非常相似,它们的构建方式也完全相同。最显著的区别是过滤器始终返回它们的值。
要添加一个过滤器
$value = ActionFilter::filter('my.hook', 'awesome');
如果没有监听器附加到这个钩子,过滤器将简单地返回 'awesome'
。
这就是你在 AppServiceProvider
中添加监听器的方式(仍然在 AppServiceProvider
中)
ActionFilter::addFilter('my.hook', function($what) {
$what = 'not '. $what;
return $what;
}, 20, 1);
现在,过滤器将返回 'not awesome'
。很酷!
你可以将这个钩子与前面的钩子一起使用
ActionFilter::addAction('my.hook', function($what) {
$what = ActionFilter::filter('my.hook', 'awesome');
echo 'You are '. $what;
});
在 Blade 中使用
假设你已经将 EventBladeServiceProvider
添加到你的配置中,因此有两个指令可供你在 Blade 模板中使用。
添加与上面动作示例相同的动作
@action('my.hook', 'awesome')
添加与上面过滤器示例相同的过滤器
You are @filter('my.hook', 'awesome')
安全
如果你发现任何与安全相关的问题,请通过电子邮件而不是使用问题跟踪器。
鸣谢
此包由 cherrypulp/laravel-package-generator 帮助启动。