diff options
Diffstat (limited to 'includes/libs/ScopedCallback.php')
-rw-r--r-- | includes/libs/ScopedCallback.php | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/includes/libs/ScopedCallback.php b/includes/libs/ScopedCallback.php index 631b6519..1ec9eaa6 100644 --- a/includes/libs/ScopedCallback.php +++ b/includes/libs/ScopedCallback.php @@ -28,16 +28,20 @@ class ScopedCallback { /** @var callable */ protected $callback; + /** @var array */ + protected $params; /** - * @param callable $callback + * @param callable|null $callback + * @param array $params Callback arguments (since 1.25) * @throws Exception */ - public function __construct( $callback ) { - if ( !is_callable( $callback ) ) { + public function __construct( $callback, array $params = array() ) { + if ( $callback !== null && !is_callable( $callback ) ) { throw new InvalidArgumentException( "Provided callback is not valid." ); } $this->callback = $callback; + $this->params = $params; } /** @@ -67,7 +71,7 @@ class ScopedCallback { */ function __destruct() { if ( $this->callback !== null ) { - call_user_func( $this->callback ); + call_user_func_array( $this->callback, $this->params ); } } } |