1<?php
2/*
3 * This file is part of the PHPUnit_MockObject package.
4 *
5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
6 *
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
9 */
10
11/**
12 * @since Class available since Release 1.0.0
13 */
14class PHPUnit_Framework_MockObject_Stub_ReturnCallback implements PHPUnit_Framework_MockObject_Stub
15{
16    protected $callback;
17
18    public function __construct($callback)
19    {
20        $this->callback = $callback;
21    }
22
23    public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation)
24    {
25        return call_user_func_array($this->callback, $invocation->parameters);
26    }
27
28    public function toString()
29    {
30        if (is_array($this->callback)) {
31            if (is_object($this->callback[0])) {
32                $class = get_class($this->callback[0]);
33                $type  = '->';
34            } else {
35                $class = $this->callback[0];
36                $type  = '::';
37            }
38
39            return sprintf(
40                'return result of user defined callback %s%s%s() with the ' .
41                'passed arguments',
42                $class,
43                $type,
44                $this->callback[1]
45            );
46        } else {
47            return 'return result of user defined callback ' . $this->callback .
48                   ' with the passed arguments';
49        }
50    }
51}
52