Skip to content

Commit def0730

Browse files
authored
Merge pull request #325 from W0rma/reflection-set-accessible
[1.x] Improve PHP 8.5+ support by avoiding deprecated `setAccessible()` calls
2 parents 7d72a53 + 68965d2 commit def0730

15 files changed

+126
-42
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, $connector, $host
6868
// avoid garbage references by replacing all closures in call stack.
6969
// what a lovely piece of code!
7070
$r = new \ReflectionProperty('Exception', '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
@@ -91,7 +91,9 @@ public function connect($uri)
9191
// avoid garbage references by replacing all closures in call stack.
9292
// what a lovely piece of code!
9393
$r = new \ReflectionProperty('Exception', 'trace');
94-
$r->setAccessible(true);
94+
if (\PHP_VERSION_ID < 80100) {
95+
$r->setAccessible(true);
96+
}
9597
$trace = $r->getValue($e);
9698

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

tests/ConnectorTest.php

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,15 @@ public function testConstructWithoutLoopAssignsLoopAutomatically()
1212
$connector = new Connector();
1313

1414
$ref = new \ReflectionProperty($connector, 'connectors');
15-
$ref->setAccessible(true);
15+
if (\PHP_VERSION_ID < 80100) {
16+
$ref->setAccessible(true);
17+
}
1618
$connectors = $ref->getValue($connector);
1719

1820
$ref = new \ReflectionProperty($connectors['tcp'], 'loop');
19-
$ref->setAccessible(true);
21+
if (\PHP_VERSION_ID < 80100) {
22+
$ref->setAccessible(true);
23+
}
2024
$loop = $ref->getValue($connectors['tcp']);
2125

2226
$this->assertInstanceOf('React\EventLoop\LoopInterface', $loop);
@@ -29,11 +33,15 @@ public function testConstructWithLoopAssignsGivenLoop()
2933
$connector = new Connector(array(), $loop);
3034

3135
$ref = new \ReflectionProperty($connector, 'connectors');
32-
$ref->setAccessible(true);
36+
if (\PHP_VERSION_ID < 80100) {
37+
$ref->setAccessible(true);
38+
}
3339
$connectors = $ref->getValue($connector);
3440

3541
$ref = new \ReflectionProperty($connectors['tcp'], 'loop');
36-
$ref->setAccessible(true);
42+
if (\PHP_VERSION_ID < 80100) {
43+
$ref->setAccessible(true);
44+
}
3745
$loop = $ref->getValue($connectors['tcp']);
3846

3947
$this->assertInstanceOf('React\EventLoop\LoopInterface', $loop);
@@ -50,7 +58,9 @@ public function testConstructWithContextAssignsGivenContext()
5058
));
5159

5260
$ref = new \ReflectionProperty($connector, 'connectors');
53-
$ref->setAccessible(true);
61+
if (\PHP_VERSION_ID < 80100) {
62+
$ref->setAccessible(true);
63+
}
5464
$connectors = $ref->getValue($connector);
5565

5666
$this->assertSame($tcp, $connectors['tcp']);
@@ -67,7 +77,9 @@ public function testConstructWithLegacyContextSignatureAssignsGivenContext()
6777
));
6878

6979
$ref = new \ReflectionProperty($connector, 'connectors');
70-
$ref->setAccessible(true);
80+
if (\PHP_VERSION_ID < 80100) {
81+
$ref->setAccessible(true);
82+
}
7183
$connectors = $ref->getValue($connector);
7284

7385
$this->assertSame($tcp, $connectors['tcp']);
@@ -80,11 +92,15 @@ public function testConstructWithLegacyLoopSignatureAssignsGivenLoop()
8092
$connector = new Connector($loop);
8193

8294
$ref = new \ReflectionProperty($connector, 'connectors');
83-
$ref->setAccessible(true);
95+
if (\PHP_VERSION_ID < 80100) {
96+
$ref->setAccessible(true);
97+
}
8498
$connectors = $ref->getValue($connector);
8599

86100
$ref = new \ReflectionProperty($connectors['tcp'], 'loop');
87-
$ref->setAccessible(true);
101+
if (\PHP_VERSION_ID < 80100) {
102+
$ref->setAccessible(true);
103+
}
88104
$loop = $ref->getValue($connectors['tcp']);
89105

90106
$this->assertInstanceOf('React\EventLoop\LoopInterface', $loop);

tests/FunctionalTcpServerTest.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,9 @@ public function testServerPassesContextOptionsToSocket()
331331
));
332332

333333
$ref = new \ReflectionProperty($server, 'master');
334-
$ref->setAccessible(true);
334+
if (\PHP_VERSION_ID < 80100) {
335+
$ref->setAccessible(true);
336+
}
335337
$socket = $ref->getValue($server);
336338

337339
$context = stream_context_get_options($socket);
@@ -346,7 +348,9 @@ public function testServerPassesDefaultBacklogSizeViaContextOptionsToSocket()
346348
$server = new TcpServer(0);
347349

348350
$ref = new \ReflectionProperty($server, 'master');
349-
$ref->setAccessible(true);
351+
if (\PHP_VERSION_ID < 80100) {
352+
$ref->setAccessible(true);
353+
}
350354
$socket = $ref->getValue($server);
351355

352356
$context = stream_context_get_options($socket);

tests/HappyEyeBallsConnectionBuilderTest.php

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

846846
$ref = new \ReflectionProperty($builder, 'connectQueue');
847-
$ref->setAccessible(true);
847+
if (\PHP_VERSION_ID < 80100) {
848+
$ref->setAccessible(true);
849+
}
848850
$ref->setValue($builder, array('::1'));
849851

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

852854
$ref = new \ReflectionProperty($builder, 'connectionPromises');
853-
$ref->setAccessible(true);
855+
if (\PHP_VERSION_ID < 80100) {
856+
$ref->setAccessible(true);
857+
}
854858
$promises = $ref->getValue($builder);
855859

856860
$this->assertEquals(array(), $promises);
@@ -876,7 +880,9 @@ public function testCleanUpCancelsAllPendingConnectionAttempts()
876880
$builder = new HappyEyeBallsConnectionBuilder($loop, $connector, $resolver, $uri, $host, $parts);
877881

878882
$ref = new \ReflectionProperty($builder, 'connectQueue');
879-
$ref->setAccessible(true);
883+
if (\PHP_VERSION_ID < 80100) {
884+
$ref->setAccessible(true);
885+
}
880886
$ref->setValue($builder, array('::1', '::1'));
881887

882888
$builder->check($this->expectCallableNever(), function () { });
@@ -904,7 +910,9 @@ public function testCleanUpCancelsAllPendingConnectionAttemptsWithoutStartingNew
904910
$builder = new HappyEyeBallsConnectionBuilder($loop, $connector, $resolver, $uri, $host, $parts);
905911

906912
$ref = new \ReflectionProperty($builder, 'connectQueue');
907-
$ref->setAccessible(true);
913+
if (\PHP_VERSION_ID < 80100) {
914+
$ref->setAccessible(true);
915+
}
908916
$ref->setValue($builder, array('::1', '::1'));
909917

910918
$builder->check($this->expectCallableNever(), function () { });
@@ -927,7 +935,9 @@ public function testMixIpsIntoConnectQueueSometimesAssignsInOriginalOrder()
927935
$builder->mixIpsIntoConnectQueue(array('::1', '::2'));
928936

929937
$ref = new \ReflectionProperty($builder, 'connectQueue');
930-
$ref->setAccessible(true);
938+
if (\PHP_VERSION_ID < 80100) {
939+
$ref->setAccessible(true);
940+
}
931941
$value = $ref->getValue($builder);
932942

933943
if ($value === array('::1', '::2')) {
@@ -953,7 +963,9 @@ public function testMixIpsIntoConnectQueueSometimesAssignsInReverseOrder()
953963
$builder->mixIpsIntoConnectQueue(array('::1', '::2'));
954964

955965
$ref = new \ReflectionProperty($builder, 'connectQueue');
956-
$ref->setAccessible(true);
966+
if (\PHP_VERSION_ID < 80100) {
967+
$ref->setAccessible(true);
968+
}
957969
$value = $ref->getValue($builder);
958970

959971
if ($value === array('::2', '::1')) {

tests/HappyEyeBallsConnectorTest.php

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

3636
$ref = new \ReflectionProperty($connector, 'loop');
37-
$ref->setAccessible(true);
37+
if (\PHP_VERSION_ID < 80100) {
38+
$ref->setAccessible(true);
39+
}
3840
$loop = $ref->getValue($connector);
3941

4042
$this->assertInstanceOf('React\EventLoop\LoopInterface', $loop);

tests/SecureConnectorTest.php

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

3939
$ref = new \ReflectionProperty($connector, 'streamEncryption');
40-
$ref->setAccessible(true);
40+
if (\PHP_VERSION_ID < 80100) {
41+
$ref->setAccessible(true);
42+
}
4143
$streamEncryption = $ref->getValue($connector);
4244

4345
$ref = new \ReflectionProperty($streamEncryption, 'loop');
44-
$ref->setAccessible(true);
46+
if (\PHP_VERSION_ID < 80100) {
47+
$ref->setAccessible(true);
48+
}
4549
$loop = $ref->getValue($streamEncryption);
4650

4751
$this->assertInstanceOf('React\EventLoop\LoopInterface', $loop);
@@ -185,7 +189,9 @@ public function testStreamEncryptionWillBeEnabledAfterConnecting()
185189
$encryption->expects($this->once())->method('enable')->with($connection)->willReturn(new \React\Promise\Promise(function () { }));
186190

187191
$ref = new \ReflectionProperty($this->connector, 'streamEncryption');
188-
$ref->setAccessible(true);
192+
if (\PHP_VERSION_ID < 80100) {
193+
$ref->setAccessible(true);
194+
}
189195
$ref->setValue($this->connector, $encryption);
190196

191197
$this->tcp->expects($this->once())->method('connect')->with($this->equalTo('example.com:80'))->willReturn(Promise\resolve($connection));
@@ -202,7 +208,9 @@ public function testConnectionWillBeRejectedIfStreamEncryptionFailsAndClosesConn
202208
$encryption->expects($this->once())->method('enable')->willReturn(Promise\reject(new \RuntimeException('TLS error', 123)));
203209

204210
$ref = new \ReflectionProperty($this->connector, 'streamEncryption');
205-
$ref->setAccessible(true);
211+
if (\PHP_VERSION_ID < 80100) {
212+
$ref->setAccessible(true);
213+
}
206214
$ref->setValue($this->connector, $encryption);
207215

208216
$this->tcp->expects($this->once())->method('connect')->with($this->equalTo('example.com:80'))->willReturn(Promise\resolve($connection));
@@ -234,7 +242,9 @@ public function testCancelDuringStreamEncryptionCancelsEncryptionAndClosesConnec
234242
$encryption->expects($this->once())->method('enable')->willReturn($pending);
235243

236244
$ref = new \ReflectionProperty($this->connector, 'streamEncryption');
237-
$ref->setAccessible(true);
245+
if (\PHP_VERSION_ID < 80100) {
246+
$ref->setAccessible(true);
247+
}
238248
$ref->setValue($this->connector, $encryption);
239249

240250
$deferred = new Deferred();
@@ -301,7 +311,9 @@ public function testRejectionDuringTlsHandshakeShouldNotCreateAnyGarbageReferenc
301311
$encryption->expects($this->once())->method('enable')->willReturn($tls->promise());
302312

303313
$ref = new \ReflectionProperty($this->connector, 'streamEncryption');
304-
$ref->setAccessible(true);
314+
if (\PHP_VERSION_ID < 80100) {
315+
$ref->setAccessible(true);
316+
}
305317
$ref->setValue($this->connector, $encryption);
306318

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

tests/SecureServerTest.php

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

3535
$ref = new \ReflectionProperty($server, 'encryption');
36-
$ref->setAccessible(true);
36+
if (\PHP_VERSION_ID < 80100) {
37+
$ref->setAccessible(true);
38+
}
3739
$encryption = $ref->getValue($server);
3840

3941
$ref = new \ReflectionProperty($encryption, 'loop');
40-
$ref->setAccessible(true);
42+
if (\PHP_VERSION_ID < 80100) {
43+
$ref->setAccessible(true);
44+
}
4145
$loop = $ref->getValue($encryption);
4246

4347
$this->assertInstanceOf('React\EventLoop\LoopInterface', $loop);
@@ -137,11 +141,15 @@ public function testConnectionWillTryToEnableEncryptionAndWaitForHandshake()
137141
$encryption->expects($this->once())->method('enable')->willReturn($pending);
138142

139143
$ref = new \ReflectionProperty($server, 'encryption');
140-
$ref->setAccessible(true);
144+
if (\PHP_VERSION_ID < 80100) {
145+
$ref->setAccessible(true);
146+
}
141147
$ref->setValue($server, $encryption);
142148

143149
$ref = new \ReflectionProperty($server, 'context');
144-
$ref->setAccessible(true);
150+
if (\PHP_VERSION_ID < 80100) {
151+
$ref->setAccessible(true);
152+
}
145153
$ref->setValue($server, array());
146154

147155
$server->on('error', $this->expectCallableNever());
@@ -168,11 +176,15 @@ public function testConnectionWillBeClosedWithErrorIfEnablingEncryptionFails()
168176
$encryption->expects($this->once())->method('enable')->willReturn(\React\Promise\reject($error));
169177

170178
$ref = new \ReflectionProperty($server, 'encryption');
171-
$ref->setAccessible(true);
179+
if (\PHP_VERSION_ID < 80100) {
180+
$ref->setAccessible(true);
181+
}
172182
$ref->setValue($server, $encryption);
173183

174184
$ref = new \ReflectionProperty($server, 'context');
175-
$ref->setAccessible(true);
185+
if (\PHP_VERSION_ID < 80100) {
186+
$ref->setAccessible(true);
187+
}
176188
$ref->setValue($server, array());
177189

178190
$error = null;

tests/ServerTest.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,15 @@ public function testConstructWithoutLoopAssignsLoopAutomatically()
1717
$server = new Server(0);
1818

1919
$ref = new \ReflectionProperty($server, 'server');
20-
$ref->setAccessible(true);
20+
if (\PHP_VERSION_ID < 80100) {
21+
$ref->setAccessible(true);
22+
}
2123
$tcp = $ref->getValue($server);
2224

2325
$ref = new \ReflectionProperty($tcp, 'loop');
24-
$ref->setAccessible(true);
26+
if (\PHP_VERSION_ID < 80100) {
27+
$ref->setAccessible(true);
28+
}
2529
$loop = $ref->getValue($tcp);
2630

2731
$this->assertInstanceOf('React\EventLoop\LoopInterface', $loop);
@@ -115,7 +119,9 @@ public function testEmitsErrorWhenUnderlyingTcpServerEmitsError()
115119
$server = new Server(0);
116120

117121
$ref = new \ReflectionProperty($server, 'server');
118-
$ref->setAccessible(true);
122+
if (\PHP_VERSION_ID < 80100) {
123+
$ref->setAccessible(true);
124+
}
119125
$tcp = $ref->getvalue($server);
120126

121127
$error = new \RuntimeException();

tests/SocketServerTest.php

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

2020
$ref = new \ReflectionProperty($socket, 'server');
21-
$ref->setAccessible(true);
21+
if (\PHP_VERSION_ID < 80100) {
22+
$ref->setAccessible(true);
23+
}
2224
$tcp = $ref->getValue($socket);
2325

2426
$ref = new \ReflectionProperty($tcp, 'loop');
25-
$ref->setAccessible(true);
27+
if (\PHP_VERSION_ID < 80100) {
28+
$ref->setAccessible(true);
29+
}
2630
$loop = $ref->getValue($tcp);
2731

2832
$this->assertInstanceOf('React\EventLoop\LoopInterface', $loop);
@@ -151,7 +155,9 @@ public function testEmitsErrorWhenUnderlyingTcpServerEmitsError()
151155
$socket = new SocketServer('127.0.0.1:0', array());
152156

153157
$ref = new \ReflectionProperty($socket, 'server');
154-
$ref->setAccessible(true);
158+
if (\PHP_VERSION_ID < 80100) {
159+
$ref->setAccessible(true);
160+
}
155161
$tcp = $ref->getvalue($socket);
156162

157163
$error = new \RuntimeException();

0 commit comments

Comments
 (0)