File tree Expand file tree Collapse file tree 3 files changed +57
-0
lines changed
tests/InternalObjectExporter Expand file tree Collapse file tree 3 files changed +57
-0
lines changed Original file line number Diff line number Diff line change
1
+ <?php declare (strict_types = 1 );
2
+
3
+ namespace ShipMonk \MemoryScanner \InternalObjectExporter ;
4
+
5
+ use ShipMonk \MemoryScanner \InternalObjectExporter ;
6
+ use WeakMap ;
7
+
8
+ /**
9
+ * @implements InternalObjectExporter<WeakMap<object, mixed>>
10
+ */
11
+ final class WeakMapExporter implements InternalObjectExporter
12
+ {
13
+
14
+ public function getClassName (): string
15
+ {
16
+ return WeakMap::class;
17
+ }
18
+
19
+ public function getProperties (object $ object ): array
20
+ {
21
+ $ values = [];
22
+
23
+ foreach ($ object as $ value ) {
24
+ $ values [] = $ value ;
25
+ }
26
+
27
+ return [
28
+ 'values ' => $ values ,
29
+ ];
30
+ }
31
+
32
+ }
Original file line number Diff line number Diff line change 8
8
use ShipMonk \MemoryScanner \InternalObjectExporter \ReflectionFiberExporter ;
9
9
use ShipMonk \MemoryScanner \InternalObjectExporter \ReflectionFunctionExporter ;
10
10
use ShipMonk \MemoryScanner \InternalObjectExporter \ReflectionGeneratorExporter ;
11
+ use ShipMonk \MemoryScanner \InternalObjectExporter \WeakMapExporter ;
11
12
use ShipMonk \MemoryScanner \MemoryRootsProvider \AutoloadMemoryRootsProvider ;
12
13
use ShipMonk \MemoryScanner \MemoryRootsProvider \ClassLikeMemoryRootsProvider ;
13
14
use ShipMonk \MemoryScanner \MemoryRootsProvider \ConstantMemoryRootsProvider ;
@@ -74,6 +75,7 @@ public static function create(): self
74
75
$ memoryScanner ->registerInternalObjectExporter (new ReflectionFiberExporter ());
75
76
$ memoryScanner ->registerInternalObjectExporter (new ReflectionFunctionExporter ());
76
77
$ memoryScanner ->registerInternalObjectExporter (new ReflectionGeneratorExporter ());
78
+ $ memoryScanner ->registerInternalObjectExporter (new WeakMapExporter ());
77
79
78
80
return $ memoryScanner ;
79
81
}
Original file line number Diff line number Diff line change
1
+ <?php declare (strict_types = 1 );
2
+
3
+ namespace ShipMonkTests \MemoryScanner \InternalObjectExporter ;
4
+
5
+ use ShipMonk \MemoryScanner \InternalObjectExporter \WeakMapExporter ;
6
+ use ShipMonkTests \MemoryScanner \MemoryScannerTestCase ;
7
+ use stdClass ;
8
+ use WeakMap ;
9
+
10
+ class WeakMapExporterTest extends MemoryScannerTestCase
11
+ {
12
+
13
+ public function testGetProperties (): void
14
+ {
15
+ $ object = new stdClass ();
16
+ $ weakMap = new WeakMap ();
17
+ $ weakMap [$ object ] = 1 ;
18
+
19
+ $ exporter = new WeakMapExporter ();
20
+ self ::assertSame (['values ' => [1 ]], $ exporter ->getProperties ($ weakMap ));
21
+ }
22
+
23
+ }
You can’t perform that action at this time.
0 commit comments