cherrypulp/laravel-action-filter

Laravel 动作过滤器

1.0.0 2019-10-14 20:53 UTC

This package is not auto-updated.

Last update: 2024-09-25 01:45:44 UTC


README

Build Status Packagist Packagist Packagist

一个辅助工具,用于在 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');

第一个参数是钩子的名称;你将在稍后监听钩子时使用此参数。所有后续参数都作为参数传递给动作。这些可以是任何你想要的。例如,你可能想通知监听器这个动作附加到某个模型上。然后,你可以将其作为其中一个参数传递。

要监听你的钩子,你需要附加监听器。这些最好添加到你的 AppServiceProviderboot() 方法中。

例如,如果你想监听上面的钩子,你可以这样做

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 帮助启动。