Code Duplication    Length = 10-12 lines in 2 locations

Func.php 2 locations

@@ 43-52 (lines=10) @@
40
     * @param   callable    $callback   The callable to wrap.
41
     * @return  \Closure                The wrapper.
42
     */
43
    public static function after(int $times = 1, callable $callback) : \Closure
44
    {
45
        return function(...$args) use ($callback, $times) {
46
            static $count = 0;
47
48
            if (++$count >= $times) {
49
                return $callback(...$args);
50
            }
51
        };
52
    }
53
54
    /**
55
     * Returns a Closure which will return the subsequent given value (argument to this method) on each call.
@@ 169-180 (lines=12) @@
166
     * @param   callable    $callback   The callable to wrap.
167
     * @return  \Closure                The wrapper.
168
     */
169
    public static function only(int $times = 1, callable $callback) : \Closure
170
    {
171
        return function(...$args) use ($callback, $times) {
172
            // Keep track of how many times the Closure was already called.
173
            static $called = 0;
174
175
            // Invoke the callback when we didn't hit our limit yet.
176
            if ($times >= ++$called) {
177
                return $callback(...$args);
178
            }
179
        };
180
    }
181
182
    /**
183
     * Creates a Closure that, when called, invokes the wrapped callable with any additional partial arguments