2652235453ded23b0910dff6bf5f69b7a76dbacb
[yaffs-website] / vendor / phpspec / prophecy / src / Prophecy / Call / Call.php
1 <?php
2
3 /*
4  * This file is part of the Prophecy.
5  * (c) Konstantin Kudryashov <ever.zet@gmail.com>
6  *     Marcello Duarte <marcello.duarte@gmail.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Prophecy\Call;
13
14 use Exception;
15 use Prophecy\Argument\ArgumentsWildcard;
16
17 /**
18  * Call object.
19  *
20  * @author Konstantin Kudryashov <ever.zet@gmail.com>
21  */
22 class Call
23 {
24     private $methodName;
25     private $arguments;
26     private $returnValue;
27     private $exception;
28     private $file;
29     private $line;
30     private $scores;
31
32     /**
33      * Initializes call.
34      *
35      * @param string      $methodName
36      * @param array       $arguments
37      * @param mixed       $returnValue
38      * @param Exception   $exception
39      * @param null|string $file
40      * @param null|int    $line
41      */
42     public function __construct($methodName, array $arguments, $returnValue,
43                                 Exception $exception = null, $file, $line)
44     {
45         $this->methodName  = $methodName;
46         $this->arguments   = $arguments;
47         $this->returnValue = $returnValue;
48         $this->exception   = $exception;
49         $this->scores      = new \SplObjectStorage();
50
51         if ($file) {
52             $this->file = $file;
53             $this->line = intval($line);
54         }
55     }
56
57     /**
58      * Returns called method name.
59      *
60      * @return string
61      */
62     public function getMethodName()
63     {
64         return $this->methodName;
65     }
66
67     /**
68      * Returns called method arguments.
69      *
70      * @return array
71      */
72     public function getArguments()
73     {
74         return $this->arguments;
75     }
76
77     /**
78      * Returns called method return value.
79      *
80      * @return null|mixed
81      */
82     public function getReturnValue()
83     {
84         return $this->returnValue;
85     }
86
87     /**
88      * Returns exception that call thrown.
89      *
90      * @return null|Exception
91      */
92     public function getException()
93     {
94         return $this->exception;
95     }
96
97     /**
98      * Returns callee filename.
99      *
100      * @return string
101      */
102     public function getFile()
103     {
104         return $this->file;
105     }
106
107     /**
108      * Returns callee line number.
109      *
110      * @return int
111      */
112     public function getLine()
113     {
114         return $this->line;
115     }
116
117     /**
118      * Returns short notation for callee place.
119      *
120      * @return string
121      */
122     public function getCallPlace()
123     {
124         if (null === $this->file) {
125             return 'unknown';
126         }
127
128         return sprintf('%s:%d', $this->file, $this->line);
129     }
130
131     /**
132      * Adds the wildcard match score for the provided wildcard.
133      *
134      * @param ArgumentsWildcard $wildcard
135      * @param false|int $score
136      *
137      * @return $this
138      */
139     public function addScore(ArgumentsWildcard $wildcard, $score)
140     {
141         $this->scores[$wildcard] = $score;
142
143         return $this;
144     }
145
146     /**
147      * Returns wildcard match score for the provided wildcard. The score is
148      * calculated if not already done.
149      *
150      * @param ArgumentsWildcard $wildcard
151      *
152      * @return false|int False OR integer score (higher - better)
153      */
154     public function getScore(ArgumentsWildcard $wildcard)
155     {
156         if (isset($this->scores[$wildcard])) {
157             return $this->scores[$wildcard];
158         }
159
160         return $this->scores[$wildcard] = $wildcard->scoreArguments($this->getArguments());
161     }
162 }