istianxin / decorator-laravel
在 Laravel 中装饰你的方法/函数
v1.0.0
2020-01-22 11:01 UTC
Requires
- php: ^7.0
- laravel/framework: ^6.0
Requires (Dev)
- ext-xdebug: *
- orchestra/testbench: v4.5.0
- phpunit/phpunit: ^8.5
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-22 22:22:39 UTC
README
通过在 Laravel 中使用中间件来装饰你的函数/方法。
通过 Composer 安装
composer require istianxin/decorator-laravel
快速入门
定义中间件
你可以定义一个类似于 Laravel 中间件 的中间件。需要注意的是,handle 方法的第一个参数不是 \Illuminate\Http\Request
,而是一个数组,包含要装饰的方法/函数的参数。除了这一点,其他都与 Laravel 中间件相同。
以下是一个示例
class MultiplicationMiddleware
{
public function handle($data, $next, $factor = 1)
{
return $next($data) * $factor;
}
}
回调和参数
除了中间件,装饰器还接受两个其他参数,回调和参数,它们也是 app()->call()
的前两个参数。
回调是一个可调用对象,可以通过 app()->call()
和 call_user_func_array()
调用,例如:DummyClass@method
、一个闭包、[Dummyclass::class,staticMethod]
、[new DummyClass(), method]
、DummyClass::staticMethod
。
参数是回调的参数数组。
示例
单个中间件
$class = new class {
public function add($a, $b)
{
return $a + $b;
}
};
$a = 1;
$b = 2;
$factor = 3;
$decorator = new Decorator();
// classname with parameter
$middleware = MultiplicationMiddleware::class . ':' . $factor;
$result = $decorator->setCallback([$class, 'add'])
->setMiddleware($middleware)
->setParameters([$a, $b])
->decorate();
echo $result; // 9
多个中间件
$decorator->setMiddleware([
$object_middleware1,
middleware2::class,
middleware3:class:param1,param2,
$closure_middleware4
]);
或者
$decorator->setMiddleware([
$object_middleware1,
middleware2::class
])->appendMiddleware([
middleware3:class:param1,param2,
$closure_middleware4
])
查看更多 测试用例。