wyrfel / php-callback
一个简单的可调用包装器,允许更好地管理调用参数
v1.0.1
2019-12-20 23:18 UTC
Requires (Dev)
- phpunit/phpunit: ^7.5
This package is auto-updated.
Last update: 2024-09-21 20:18:04 UTC
README
php-callback
这是一个简单的可调用助手,允许更好地控制最终调用时的参数。
概念
与立即函数调用(接受一组参数)不同,当传递回调时,有两次可能传递参数的情况——一次是在创建/传递回调时,另一次是在调用时。
我们将前者称为实例化参数,因为它们是在创建回调助手时传递的——我们将后者称为调用参数,因为它们是在调用回调时传递的。
对于常规的PHP可调用对象,参数只能在调用时传递。一个例外是内置的array_walk
,它允许在传递回调时指定一个userdata参数,该参数在调用时附加到调用参数。此助手执行相同的功能,但具有更多功能。
当有两组参数,但可调用函数当然只能接受一组参数时,问题就出现了如何将这两组参数合并为一组。此助手可配置为
- 将调用参数追加到实例化参数
$callable(A1, A2, A3, B1, B2)
- 将调用参数预置到实例化参数
$callable(B1, B2, A1, A2, A3)
- 完全忽略调用参数
$callable(A1, A2, A3)
- 根据位置用调用参数覆盖实例化参数
$callable(B1, B2, A3)
(其中An是实例化参数,Bn是调用参数)
使用方法
$callback = new Callback([$this, 'methodName'], $withThis, $andThat); $callback->appendInvocationArguments(); $callback->prependInvocationArguments(); $callback->ignoreInvocationArguments(); $callback->overrideInstantiationArguments(); preg_replace_callback($regexp, $callback, $subject);