Code Duplication    Length = 41-43 lines in 2 locations

src/Prophecy/Prediction/CallbackPrediction.php 1 location

@@ 25-65 (lines=41) @@
22
 *
23
 * @author Konstantin Kudryashov <[email protected]>
24
 */
25
class CallbackPrediction implements PredictionInterface
26
{
27
    private $callback;
28
29
    /**
30
     * Initializes callback prediction.
31
     *
32
     * @param callable $callback Custom callback
33
     *
34
     * @throws \Prophecy\Exception\InvalidArgumentException
35
     */
36
    public function __construct($callback)
37
    {
38
        if (!is_callable($callback)) {
39
            throw new InvalidArgumentException(sprintf(
40
                'Callable expected as an argument to CallbackPrediction, but got %s.',
41
                gettype($callback)
42
            ));
43
        }
44
45
        $this->callback = $callback;
46
    }
47
48
    /**
49
     * Executes preset callback.
50
     *
51
     * @param Call[]         $calls
52
     * @param ObjectProphecy $object
53
     * @param MethodProphecy $method
54
     */
55
    public function check(array $calls, ObjectProphecy $object, MethodProphecy $method)
56
    {
57
        $callback = $this->callback;
58
59
        if ($callback instanceof Closure && method_exists('Closure', 'bind')) {
60
            $callback = Closure::bind($callback, $object);
61
        }
62
63
        call_user_func($callback, $calls, $object, $method);
64
    }
65
}
66

src/Prophecy/Promise/CallbackPromise.php 1 location

@@ 24-66 (lines=43) @@
21
 *
22
 * @author Konstantin Kudryashov <[email protected]>
23
 */
24
class CallbackPromise implements PromiseInterface
25
{
26
    private $callback;
27
28
    /**
29
     * Initializes callback promise.
30
     *
31
     * @param callable $callback Custom callback
32
     *
33
     * @throws \Prophecy\Exception\InvalidArgumentException
34
     */
35
    public function __construct($callback)
36
    {
37
        if (!is_callable($callback)) {
38
            throw new InvalidArgumentException(sprintf(
39
                'Callable expected as an argument to CallbackPromise, but got %s.',
40
                gettype($callback)
41
            ));
42
        }
43
44
        $this->callback = $callback;
45
    }
46
47
    /**
48
     * Evaluates promise callback.
49
     *
50
     * @param array          $args
51
     * @param ObjectProphecy $object
52
     * @param MethodProphecy $method
53
     *
54
     * @return mixed
55
     */
56
    public function execute(array $args, ObjectProphecy $object, MethodProphecy $method)
57
    {
58
        $callback = $this->callback;
59
60
        if ($callback instanceof Closure && method_exists('Closure', 'bind')) {
61
            $callback = Closure::bind($callback, $object);
62
        }
63
64
        return call_user_func($callback, $args, $object, $method);
65
    }
66
}
67