Skip to content

Commit 158566f

Browse files
authored
Merge pull request #327 from clue-labs/accessible-v3
[3.x] Improve PHP 8.5+ support by avoiding deprecated `setAccessible()` calls
2 parents 78ebd28 + bc38f77 commit 158566f

14 files changed

+108
-36
lines changed

src/DnsConnector.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ function ($resolve, $reject) use (&$promise, &$resolved, $uri, $host, $parts) {
6868
// avoid garbage references by replacing all closures in call stack.
6969
// what a lovely piece of code!
7070
$r = new \ReflectionProperty(\Exception::class, 'trace');
71-
$r->setAccessible(true);
71+
if (\PHP_VERSION_ID < 80100) {
72+
$r->setAccessible(true);
73+
}
7274
$trace = $r->getValue($e);
7375

7476
// Exception trace arguments are not available on some PHP 7.4 installs

src/SecureConnector.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,9 @@ public function connect($uri)
7474
// avoid garbage references by replacing all closures in call stack.
7575
// what a lovely piece of code!
7676
$r = new \ReflectionProperty(\Exception::class, 'trace');
77-
$r->setAccessible(true);
77+
if (\PHP_VERSION_ID < 80100) {
78+
$r->setAccessible(true);
79+
}
7880
$trace = $r->getValue($e);
7981

8082
// Exception trace arguments are not available on some PHP 7.4 installs

tests/ConnectorTest.php

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,15 @@ public function testConstructWithoutLoopAssignsLoopAutomatically()
1515
$connector = new Connector();
1616

1717
$ref = new \ReflectionProperty($connector, 'connectors');
18-
$ref->setAccessible(true);
18+
if (\PHP_VERSION_ID < 80100) {
19+
$ref->setAccessible(true);
20+
}
1921
$connectors = $ref->getValue($connector);
2022

2123
$ref = new \ReflectionProperty($connectors['tcp'], 'loop');
22-
$ref->setAccessible(true);
24+
if (\PHP_VERSION_ID < 80100) {
25+
$ref->setAccessible(true);
26+
}
2327
$loop = $ref->getValue($connectors['tcp']);
2428

2529
$this->assertInstanceOf(LoopInterface::class, $loop);
@@ -32,11 +36,15 @@ public function testConstructWithLoopAssignsGivenLoop()
3236
$connector = new Connector([], $loop);
3337

3438
$ref = new \ReflectionProperty($connector, 'connectors');
35-
$ref->setAccessible(true);
39+
if (\PHP_VERSION_ID < 80100) {
40+
$ref->setAccessible(true);
41+
}
3642
$connectors = $ref->getValue($connector);
3743

3844
$ref = new \ReflectionProperty($connectors['tcp'], 'loop');
39-
$ref->setAccessible(true);
45+
if (\PHP_VERSION_ID < 80100) {
46+
$ref->setAccessible(true);
47+
}
4048
$loop = $ref->getValue($connectors['tcp']);
4149

4250
$this->assertInstanceOf(LoopInterface::class, $loop);
@@ -53,7 +61,9 @@ public function testConstructWithContextAssignsGivenContext()
5361
]);
5462

5563
$ref = new \ReflectionProperty($connector, 'connectors');
56-
$ref->setAccessible(true);
64+
if (\PHP_VERSION_ID < 80100) {
65+
$ref->setAccessible(true);
66+
}
5767
$connectors = $ref->getValue($connector);
5868

5969
$this->assertSame($tcp, $connectors['tcp']);

tests/FunctionalTcpServerTest.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,9 @@ public function testServerPassesContextOptionsToSocket()
334334
]);
335335

336336
$ref = new \ReflectionProperty($server, 'master');
337-
$ref->setAccessible(true);
337+
if (\PHP_VERSION_ID < 80100) {
338+
$ref->setAccessible(true);
339+
}
338340
$socket = $ref->getValue($server);
339341

340342
$context = stream_context_get_options($socket);
@@ -349,7 +351,9 @@ public function testServerPassesDefaultBacklogSizeViaContextOptionsToSocket()
349351
$server = new TcpServer(0);
350352

351353
$ref = new \ReflectionProperty($server, 'master');
352-
$ref->setAccessible(true);
354+
if (\PHP_VERSION_ID < 80100) {
355+
$ref->setAccessible(true);
356+
}
353357
$socket = $ref->getValue($server);
354358

355359
$context = stream_context_get_options($socket);

tests/HappyEyeBallsConnectionBuilderTest.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -845,13 +845,17 @@ public function testCheckCallsRejectFunctionImmediateWithoutLeavingDanglingPromi
845845
$builder = new HappyEyeBallsConnectionBuilder($loop, $connector, $resolver, $uri, $host, $parts);
846846

847847
$ref = new \ReflectionProperty($builder, 'connectQueue');
848-
$ref->setAccessible(true);
848+
if (\PHP_VERSION_ID < 80100) {
849+
$ref->setAccessible(true);
850+
}
849851
$ref->setValue($builder, ['::1']);
850852

851853
$builder->check($this->expectCallableNever(), function () { });
852854

853855
$ref = new \ReflectionProperty($builder, 'connectionPromises');
854-
$ref->setAccessible(true);
856+
if (\PHP_VERSION_ID < 80100) {
857+
$ref->setAccessible(true);
858+
}
855859
$promises = $ref->getValue($builder);
856860

857861
$this->assertEquals([], $promises);
@@ -877,7 +881,9 @@ public function testCleanUpCancelsAllPendingConnectionAttempts()
877881
$builder = new HappyEyeBallsConnectionBuilder($loop, $connector, $resolver, $uri, $host, $parts);
878882

879883
$ref = new \ReflectionProperty($builder, 'connectQueue');
880-
$ref->setAccessible(true);
884+
if (\PHP_VERSION_ID < 80100) {
885+
$ref->setAccessible(true);
886+
}
881887
$ref->setValue($builder, ['::1', '::1']);
882888

883889
$builder->check($this->expectCallableNever(), function () { });
@@ -905,7 +911,9 @@ public function testCleanUpCancelsAllPendingConnectionAttemptsWithoutStartingNew
905911
$builder = new HappyEyeBallsConnectionBuilder($loop, $connector, $resolver, $uri, $host, $parts);
906912

907913
$ref = new \ReflectionProperty($builder, 'connectQueue');
908-
$ref->setAccessible(true);
914+
if (\PHP_VERSION_ID < 80100) {
915+
$ref->setAccessible(true);
916+
}
909917
$ref->setValue($builder, ['::1', '::1']);
910918

911919
$builder->check($this->expectCallableNever(), function () { });
@@ -928,7 +936,9 @@ public function testMixIpsIntoConnectQueueSometimesAssignsInOriginalOrder()
928936
$builder->mixIpsIntoConnectQueue(['::1', '::2']);
929937

930938
$ref = new \ReflectionProperty($builder, 'connectQueue');
931-
$ref->setAccessible(true);
939+
if (\PHP_VERSION_ID < 80100) {
940+
$ref->setAccessible(true);
941+
}
932942
$value = $ref->getValue($builder);
933943

934944
if ($value === ['::1', '::2']) {
@@ -954,7 +964,9 @@ public function testMixIpsIntoConnectQueueSometimesAssignsInReverseOrder()
954964
$builder->mixIpsIntoConnectQueue(['::1', '::2']);
955965

956966
$ref = new \ReflectionProperty($builder, 'connectQueue');
957-
$ref->setAccessible(true);
967+
if (\PHP_VERSION_ID < 80100) {
968+
$ref->setAccessible(true);
969+
}
958970
$value = $ref->getValue($builder);
959971

960972
if ($value === ['::2', '::1']) {

tests/HappyEyeBallsConnectorTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ public function testConstructWithoutLoopAssignsLoopAutomatically()
4040
$connector = new HappyEyeBallsConnector(null, $this->tcp, $this->resolver);
4141

4242
$ref = new \ReflectionProperty($connector, 'loop');
43-
$ref->setAccessible(true);
43+
if (\PHP_VERSION_ID < 80100) {
44+
$ref->setAccessible(true);
45+
}
4446
$loop = $ref->getValue($connector);
4547

4648
$this->assertInstanceOf(LoopInterface::class, $loop);

tests/SecureConnectorTest.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,15 @@ public function testConstructWithoutLoopAssignsLoopAutomatically()
3535
$connector = new SecureConnector($this->tcp);
3636

3737
$ref = new \ReflectionProperty($connector, 'streamEncryption');
38-
$ref->setAccessible(true);
38+
if (\PHP_VERSION_ID < 80100) {
39+
$ref->setAccessible(true);
40+
}
3941
$streamEncryption = $ref->getValue($connector);
4042

4143
$ref = new \ReflectionProperty($streamEncryption, 'loop');
42-
$ref->setAccessible(true);
44+
if (\PHP_VERSION_ID < 80100) {
45+
$ref->setAccessible(true);
46+
}
4347
$loop = $ref->getValue($streamEncryption);
4448

4549
$this->assertInstanceOf(LoopInterface::class, $loop);
@@ -183,7 +187,9 @@ public function testStreamEncryptionWillBeEnabledAfterConnecting()
183187
$encryption->expects($this->once())->method('enable')->with($connection)->willReturn(new Promise(function () { }));
184188

185189
$ref = new \ReflectionProperty($this->connector, 'streamEncryption');
186-
$ref->setAccessible(true);
190+
if (\PHP_VERSION_ID < 80100) {
191+
$ref->setAccessible(true);
192+
}
187193
$ref->setValue($this->connector, $encryption);
188194

189195
$this->tcp->expects($this->once())->method('connect')->with('example.com:80')->willReturn(resolve($connection));
@@ -200,7 +206,9 @@ public function testConnectionWillBeRejectedIfStreamEncryptionFailsAndClosesConn
200206
$encryption->expects($this->once())->method('enable')->willReturn(reject(new \RuntimeException('TLS error', 123)));
201207

202208
$ref = new \ReflectionProperty($this->connector, 'streamEncryption');
203-
$ref->setAccessible(true);
209+
if (\PHP_VERSION_ID < 80100) {
210+
$ref->setAccessible(true);
211+
}
204212
$ref->setValue($this->connector, $encryption);
205213

206214
$this->tcp->expects($this->once())->method('connect')->with('example.com:80')->willReturn(resolve($connection));
@@ -232,7 +240,9 @@ public function testCancelDuringStreamEncryptionCancelsEncryptionAndClosesConnec
232240
$encryption->expects($this->once())->method('enable')->willReturn($pending);
233241

234242
$ref = new \ReflectionProperty($this->connector, 'streamEncryption');
235-
$ref->setAccessible(true);
243+
if (\PHP_VERSION_ID < 80100) {
244+
$ref->setAccessible(true);
245+
}
236246
$ref->setValue($this->connector, $encryption);
237247

238248
$deferred = new Deferred();
@@ -299,7 +309,9 @@ public function testRejectionDuringTlsHandshakeShouldNotCreateAnyGarbageReferenc
299309
$encryption->expects($this->once())->method('enable')->willReturn($tls->promise());
300310

301311
$ref = new \ReflectionProperty($this->connector, 'streamEncryption');
302-
$ref->setAccessible(true);
312+
if (\PHP_VERSION_ID < 80100) {
313+
$ref->setAccessible(true);
314+
}
303315
$ref->setValue($this->connector, $encryption);
304316

305317
$promise = $this->connector->connect('example.com:80');

tests/SecureServerTest.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,15 @@ public function testConstructWithoutLoopAssignsLoopAutomatically()
2121
$server = new SecureServer($tcp);
2222

2323
$ref = new \ReflectionProperty($server, 'encryption');
24-
$ref->setAccessible(true);
24+
if (\PHP_VERSION_ID < 80100) {
25+
$ref->setAccessible(true);
26+
}
2527
$encryption = $ref->getValue($server);
2628

2729
$ref = new \ReflectionProperty($encryption, 'loop');
28-
$ref->setAccessible(true);
30+
if (\PHP_VERSION_ID < 80100) {
31+
$ref->setAccessible(true);
32+
}
2933
$loop = $ref->getValue($encryption);
3034

3135
$this->assertInstanceOf(LoopInterface::class, $loop);
@@ -125,11 +129,15 @@ public function testConnectionWillTryToEnableEncryptionAndWaitForHandshake()
125129
$encryption->expects($this->once())->method('enable')->willReturn($pending);
126130

127131
$ref = new \ReflectionProperty($server, 'encryption');
128-
$ref->setAccessible(true);
132+
if (\PHP_VERSION_ID < 80100) {
133+
$ref->setAccessible(true);
134+
}
129135
$ref->setValue($server, $encryption);
130136

131137
$ref = new \ReflectionProperty($server, 'context');
132-
$ref->setAccessible(true);
138+
if (\PHP_VERSION_ID < 80100) {
139+
$ref->setAccessible(true);
140+
}
133141
$ref->setValue($server, []);
134142

135143
$server->on('error', $this->expectCallableNever());
@@ -156,11 +164,15 @@ public function testConnectionWillBeClosedWithErrorIfEnablingEncryptionFails()
156164
$encryption->expects($this->once())->method('enable')->willReturn(reject($error));
157165

158166
$ref = new \ReflectionProperty($server, 'encryption');
159-
$ref->setAccessible(true);
167+
if (\PHP_VERSION_ID < 80100) {
168+
$ref->setAccessible(true);
169+
}
160170
$ref->setValue($server, $encryption);
161171

162172
$ref = new \ReflectionProperty($server, 'context');
163-
$ref->setAccessible(true);
173+
if (\PHP_VERSION_ID < 80100) {
174+
$ref->setAccessible(true);
175+
}
164176
$ref->setValue($server, []);
165177

166178
$error = null;

tests/SocketServerTest.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,15 @@ public function testConstructWithoutLoopAssignsLoopAutomatically()
2222
$socket->close();
2323

2424
$ref = new \ReflectionProperty($socket, 'server');
25-
$ref->setAccessible(true);
25+
if (\PHP_VERSION_ID < 80100) {
26+
$ref->setAccessible(true);
27+
}
2628
$tcp = $ref->getValue($socket);
2729

2830
$ref = new \ReflectionProperty($tcp, 'loop');
29-
$ref->setAccessible(true);
31+
if (\PHP_VERSION_ID < 80100) {
32+
$ref->setAccessible(true);
33+
}
3034
$loop = $ref->getValue($tcp);
3135

3236
$this->assertInstanceOf(LoopInterface::class, $loop);
@@ -140,7 +144,9 @@ public function testEmitsErrorWhenUnderlyingTcpServerEmitsError()
140144
$socket = new SocketServer('127.0.0.1:0', []);
141145

142146
$ref = new \ReflectionProperty($socket, 'server');
143-
$ref->setAccessible(true);
147+
if (\PHP_VERSION_ID < 80100) {
148+
$ref->setAccessible(true);
149+
}
144150
$tcp = $ref->getvalue($socket);
145151

146152
$error = new \RuntimeException();

tests/TcpConnectorTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ public function testConstructWithoutLoopAssignsLoopAutomatically()
2222
$connector = new TcpConnector();
2323

2424
$ref = new \ReflectionProperty($connector, 'loop');
25-
$ref->setAccessible(true);
25+
if (\PHP_VERSION_ID < 80100) {
26+
$ref->setAccessible(true);
27+
}
2628
$loop = $ref->getValue($connector);
2729

2830
$this->assertInstanceOf(LoopInterface::class, $loop);

0 commit comments

Comments
 (0)