11<?php
22
3+ declare (strict_types=1 );
4+
35namespace VCR ;
46
57use VCR \Storage \Storage ;
1012class Cassette
1113{
1214 /**
13- * Casette name.
14- *
15- * @var string
16- */
17- protected $ name ;
18-
19- /**
20- * VCR configuration.
21- *
22- * @var Configuration
15+ * @param Storage<array> $storage
2316 */
24- protected $ config ;
25-
26- /**
27- * Storage used to store records and request pairs.
28- *
29- * @var Storage<array>
30- */
31- protected $ storage ;
32-
33- /**
34- * Creates a new cassette.
35- *
36- * @param string $name name of the cassette
37- * @param Configuration $config configuration to use for this cassette
38- * @param Storage<array> $storage storage to use for requests and responses
39- *
40- * @throws \VCR\VCRException if cassette name is in an invalid format
41- */
42- public function __construct (string $ name , Configuration $ config , Storage $ storage )
43- {
44- $ this ->name = $ name ;
45- $ this ->config = $ config ;
46- $ this ->storage = $ storage ;
17+ public function __construct (
18+ protected string $ name ,
19+ protected Configuration $ config ,
20+ protected Storage $ storage
21+ ) {
4722 }
4823
49- /**
50- * Returns true if a response was recorded for specified request.
51- *
52- * @param Request $request request to check if it was recorded
53- *
54- * @return bool true if a response was recorded for specified request
55- */
5624 public function hasResponse (Request $ request ): bool
5725 {
5826 return null !== $ this ->playback ($ request );
5927 }
6028
61- /**
62- * Returns a response for given request or null if not found.
63- *
64- * @param Request $request request
65- *
66- * @return Response|null response for specified request
67- */
6829 public function playback (Request $ request ): ?Response
6930 {
7031 foreach ($ this ->storage as $ recording ) {
@@ -77,48 +38,30 @@ public function playback(Request $request): ?Response
7738 return null ;
7839 }
7940
80- /**
81- * Records a request and response pair.
82- *
83- * @param Request $request request to record
84- * @param Response $response response to record
85- */
8641 public function record (Request $ request , Response $ response ): void
8742 {
8843 if ($ this ->hasResponse ($ request )) {
8944 return ;
9045 }
9146
92- $ recording = [
47+ $ this -> storage -> storeRecording ( [
9348 'request ' => $ request ->toArray (),
9449 'response ' => $ response ->toArray (),
95- ];
96-
97- $ this ->storage ->storeRecording ($ recording );
50+ ]);
9851 }
9952
100- /**
101- * Returns the name of the current cassette.
102- *
103- * @return string current cassette name
104- */
10553 public function getName (): string
10654 {
10755 return $ this ->name ;
10856 }
10957
110- /**
111- * Returns true if the cassette was created recently.
112- */
11358 public function isNew (): bool
11459 {
11560 return $ this ->storage ->isNew ();
11661 }
11762
11863 /**
119- * Returns a list of callbacks to configured request matchers.
120- *
121- * @return callable[] list of callbacks to configured request matchers
64+ * @return callable[]
12265 */
12366 protected function getRequestMatchers (): array
12467 {
0 commit comments