Move up devunt's name to Developers
[lhc/web/wiklou.git] / includes / libs / ScopedCallback.php
index 631b651..1ec9eaa 100644 (file)
 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 );
                }
        }
 }