magdicom / laravel-hooks
Laravel 轻量级行为钩子包
Requires
- php: ^8.0
- illuminate/contracts: ^v9.48.0
- magdicom/hooks: ^1.0
Requires (Dev)
- nunomaduro/collision: ^6.4
- nunomaduro/larastan: ^2.4
- orchestra/testbench: ^7.19
- pestphp/pest: ^1.22
- pestphp/pest-plugin-laravel: ^1.4
- phpstan/extension-installer: ^1.2
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3.3
- phpunit/phpunit: ^9.5
- spatie/laravel-ray: ^1.32
This package is auto-updated.
Last update: 2024-09-09 08:05:46 UTC
README
这是一个 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!
输出
当您调用 all
、first
或 last
方法之一时,相应的钩子函数将被执行,其输出将被保存到特殊属性中,稍后可以使用 toString
或 toArray
方法导出。
回调
闭包
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']);
如果这不是一个静态方法,将会创建一个对象,并调用提供的方法。
参数
每次执行钩子回调函数时,可以传递一个参数数组给它,以帮助它执行所需的操作。
参数分为两种类型
- 全局参数将在所有钩子名称和回调函数中可用,并且可以使用
setParameter
和setParameters
方法定义。 - 范围参数仅对请求的钩子名称可用,可以作为
all
、first
和last
方法的第二个参数提供。
优先级
当您需要确保某些钩子函数按顺序执行时,这里就是 $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
(可选)键值对数组,您希望为与同一钩子名称相关的所有回调函数提供。
请注意:通过此方法提供的参数将仅在指定钩子名称的范围内可用,要指定全局参数,请使用 setParameter
、setParameters
方法。
第一
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)。有关更多信息,请参阅许可文件。