wyrfel/php-callback

一个简单的可调用包装器,允许更好地管理调用参数

v1.0.1 2019-12-20 23:18 UTC

This package is auto-updated.

Last update: 2024-09-21 20:18:04 UTC


README

Build Status Maintainability Test Coverage Latest Stable Version Total Downloads License

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);