magdicom/laravel-hooks

Laravel 轻量级行为钩子包

v1.1.0 2023-01-24 08:06 UTC

README

Latest Version on Packagist

这是一个 laravel 9 的 magdicom/hooks 包装器,允许你轻松地在 Laravel 项目中使用行为钩子。

安装

您可以通过 composer 安装此包

composer require magdicom/laravel-hooks

用法

要调用任何可用方法,您可以使用外观

use Magdicom\LaravelHooks\Facade\Hooks;

Hooks::register("HookName", function($vars){}, 1);

或者使用以下辅助函数

hooks()->register("HookName", function($vars){}, 1);

快速入门

# Register our functions
Hooks::register("Greetings", function($vars){
    return "Hi There,";
}, 1);

Hooks::register("Greetings", function($vars){
    return "This is the second line of greetings!";
}, 2);

# Later we run it
echo Hooks::all("Greetings")->toString("<br>");

上述示例将输出

Hi There,
This is the second line of greetings!

输出

当您调用 allfirstlast 方法之一时,相应的钩子函数将被执行,其输出将被保存到特殊属性中,稍后可以使用 toStringtoArray 方法导出。

回调

闭包

Hooks::register("Callback", function($vars) {
    return "Closure";
});

函数名称

function simple_function_name($vars){
    //
}

Hooks::register("Callback", "simple_function_name");

对象方法

class FooBar {
    public function methodName($vars){
        //
    }
}

$object = new FooBar;

Hooks::register("Callback", [$object, 'methodName']);

或者

Hooks::register("Callback", [(new FooBar), 'methodName']);

静态方法

class FooBar {
    public static function staticMethodName($vars){
        //
    }
}

Hooks::register("Callback", ['FooBar', 'staticMethodName']);

如果这不是一个静态方法,将会创建一个对象,并调用提供的方法。

参数

每次执行钩子回调函数时,可以传递一个参数数组给它,以帮助它执行所需的操作。

参数分为两种类型

  • 全局参数将在所有钩子名称和回调函数中可用,并且可以使用 setParametersetParameters 方法定义。
  • 范围参数仅对请求的钩子名称可用,可以作为 allfirstlast 方法的第二个参数提供。

优先级

当您需要确保某些钩子函数按顺序执行时,这里就是 $priority,它是 register 方法的第三个和最后一个参数。

方法

register

Hooks::register(string $hookName, array|callable $callback, ?int $priority): self

通过此方法注册所有您的钩子函数

  • $hookName 这可以是任何您想要的内容,它就像一个分组名称,其中所有相关的行为钩子函数都将附加到。
  • $callback 只接受 callable 函数。
  • $priority(可选)用于在执行前对回调进行排序。

all

Hooks::all(string $hookName, ?array $parameters): self

将执行指定钩子名称的所有回调函数,默认情况下,它将返回作为字符串的输出,有关更多选项,请参阅 输出 部分。

  • $hookName 您想要执行其回调函数的钩子名称。
  • $parameters(可选)键值对数组,您希望为与同一钩子名称相关的所有回调函数提供。

请注意:通过此方法提供的参数将仅在指定钩子名称的范围内可用,要指定全局参数,请使用 setParametersetParameters 方法。

第一

Hooks::first(string $hookName, ?array $parameters): self

在各个方面都与all方法相似,唯一的区别是只有排序后的第一个回调将被执行。

最后

Hooks::last(string $hookName, ?array $parameters): self

在各个方面都与all方法相似,唯一的区别是只有排序后的最后一个回调将被执行。

toArray

Hooks::toArray(): array

将返回最后一个执行的钩子函数的输出作为数组。

toString

Hooks::toString(?string $separator): string

将返回最后一个执行的钩子函数的输出作为一个字符串。

  • $separator可以用于根据需要分隔输出(例如:“\n”,“<br>”)。

setParameter

Hooks::setParameter(string $name, mixed $value): self

使用此方法来定义任何钩子函数都可以访问的参数。

  • $name 参数的名称。
  • $value 参数的值可以是字符串、数组甚至是对象。

备注:如果参数已定义,则其旧值将被此处提供的值替换。

setParameters

Hooks::setParameters(array $parameters): self

setParameter相同,但此处它接受一个包含名称和值对的数组作为其唯一参数。

测试

composer test

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全漏洞

请查阅我们关于如何报告安全漏洞的安全策略

鸣谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件