Skip to content

Commit ea787e4

Browse files
authored
Merge pull request #242 from clue-labs/accessible-v3
[3.x] Improve PHP 8.5+ support by avoiding deprecated `setAccessible()` calls
2 parents 197667b + 0d0267b commit ea787e4

File tree

5 files changed

+168
-56
lines changed

5 files changed

+168
-56
lines changed

src/Query/RetryExecutor.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ public function tryQuery(Query $query, $retries)
4949
// avoid garbage references by replacing all closures in call stack.
5050
// what a lovely piece of code!
5151
$r = new \ReflectionProperty(\Exception::class, 'trace');
52-
$r->setAccessible(true);
52+
if (\PHP_VERSION_ID < 80100) {
53+
$r->setAccessible(true);
54+
}
5355
$trace = $r->getValue($e);
5456

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

tests/Query/TcpTransportExecutorTest.php

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ public function testCtorShouldAcceptNameserverAddresses($input, $expected)
3131
$executor = new TcpTransportExecutor($input, $loop);
3232

3333
$ref = new \ReflectionProperty($executor, 'nameserver');
34-
$ref->setAccessible(true);
34+
if (\PHP_VERSION_ID < 80100) {
35+
$ref->setAccessible(true);
36+
}
3537
$value = $ref->getValue($executor);
3638

3739
$this->assertEquals($expected, $value);
@@ -70,7 +72,9 @@ public function testCtorWithoutLoopShouldAssignDefaultLoop()
7072
$executor = new TcpTransportExecutor('127.0.0.1');
7173

7274
$ref = new \ReflectionProperty($executor, 'loop');
73-
$ref->setAccessible(true);
75+
if (\PHP_VERSION_ID < 80100) {
76+
$ref->setAccessible(true);
77+
}
7478
$loop = $ref->getValue($executor);
7579

7680
$this->assertInstanceOf(LoopInterface::class, $loop);
@@ -128,7 +132,9 @@ public function testQueryRejectsIfServerConnectionFails()
128132
$executor = new TcpTransportExecutor('::1', $loop);
129133

130134
$ref = new \ReflectionProperty($executor, 'nameserver');
131-
$ref->setAccessible(true);
135+
if (\PHP_VERSION_ID < 80100) {
136+
$ref->setAccessible(true);
137+
}
132138
$ref->setValue($executor, '///');
133139

134140
$query = new Query('google.com', Message::TYPE_A, Message::CLASS_IN);
@@ -307,7 +313,9 @@ public function testQueryStaysPendingWhenClientCanNotSendExcessiveMessageInOneCh
307313
$promise->then($this->expectCallableNever(), $this->expectCallableNever());
308314

309315
$ref = new \ReflectionProperty($executor, 'writePending');
310-
$ref->setAccessible(true);
316+
if (\PHP_VERSION_ID < 80100) {
317+
$ref->setAccessible(true);
318+
}
311319
$writePending = $ref->getValue($executor);
312320

313321
$this->assertTrue($writePending);
@@ -349,7 +357,9 @@ public function testQueryStaysPendingWhenClientCanNotSendExcessiveMessageInOneCh
349357
$promise->then($this->expectCallableNever(), $this->expectCallableNever());
350358

351359
$ref = new \ReflectionProperty($executor, 'writePending');
352-
$ref->setAccessible(true);
360+
if (\PHP_VERSION_ID < 80100) {
361+
$ref->setAccessible(true);
362+
}
353363
$writePending = $ref->getValue($executor);
354364

355365
$this->assertTrue($writePending);
@@ -390,7 +400,9 @@ public function testQueryRejectsWhenClientKeepsSendingWhenServerClosesSocketWith
390400
$executor->handleWritable();
391401

392402
$ref = new \ReflectionProperty($executor, 'writePending');
393-
$ref->setAccessible(true);
403+
if (\PHP_VERSION_ID < 80100) {
404+
$ref->setAccessible(true);
405+
}
394406
$writePending = $ref->getValue($executor);
395407

396408
// We expect an EPIPE (Broken pipe) on second write.
@@ -745,7 +757,9 @@ public function testQueryResolvesIfServerSendsBackResponseMessageAndWillStartIdl
745757

746758
// use outgoing buffer as response message
747759
$ref = new \ReflectionProperty($executor, 'writeBuffer');
748-
$ref->setAccessible(true);
760+
if (\PHP_VERSION_ID < 80100) {
761+
$ref->setAccessible(true);
762+
}
749763
$data = $ref->getValue($executor);
750764

751765
$client = stream_socket_accept($server);
@@ -780,7 +794,9 @@ public function testQueryResolvesIfServerSendsBackResponseMessageAfterCancelling
780794

781795
// use outgoing buffer as response message
782796
$ref = new \ReflectionProperty($executor, 'writeBuffer');
783-
$ref->setAccessible(true);
797+
if (\PHP_VERSION_ID < 80100) {
798+
$ref->setAccessible(true);
799+
}
784800
$data = $ref->getValue($executor);
785801

786802
$client = stream_socket_accept($server);
@@ -813,7 +829,9 @@ public function testQueryResolvesIfServerSendsBackResponseMessageAfterCancelling
813829

814830
// use outgoing buffer as response message
815831
$ref = new \ReflectionProperty($executor, 'writeBuffer');
816-
$ref->setAccessible(true);
832+
if (\PHP_VERSION_ID < 80100) {
833+
$ref->setAccessible(true);
834+
}
817835
$data = $ref->getValue($executor);
818836

819837
$client = stream_socket_accept($server);
@@ -854,7 +872,9 @@ public function testTriggerIdleTimerAfterPreviousQueryResolvedWillCloseIdleSocke
854872

855873
// use outgoing buffer as response message
856874
$ref = new \ReflectionProperty($executor, 'writeBuffer');
857-
$ref->setAccessible(true);
875+
if (\PHP_VERSION_ID < 80100) {
876+
$ref->setAccessible(true);
877+
}
858878
$data = $ref->getValue($executor);
859879

860880
$client = stream_socket_accept($server);
@@ -892,7 +912,9 @@ public function testClosingConnectionAfterPreviousQueryResolvedWillCancelIdleTim
892912

893913
// use outgoing buffer as response message
894914
$ref = new \ReflectionProperty($executor, 'writeBuffer');
895-
$ref->setAccessible(true);
915+
if (\PHP_VERSION_ID < 80100) {
916+
$ref->setAccessible(true);
917+
}
896918
$data = $ref->getValue($executor);
897919

898920
$client = stream_socket_accept($server);
@@ -930,7 +952,9 @@ public function testQueryAgainAfterPreviousQueryResolvedWillReuseSocketAndCancel
930952

931953
// use outgoing buffer as response message
932954
$ref = new \ReflectionProperty($executor, 'writeBuffer');
933-
$ref->setAccessible(true);
955+
if (\PHP_VERSION_ID < 80100) {
956+
$ref->setAccessible(true);
957+
}
934958
$data = $ref->getValue($executor);
935959

936960
$client = stream_socket_accept($server);

tests/Query/TimeoutExecutorTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ public function testCtorWithoutLoopShouldAssignDefaultLoop()
3838
$executor = new TimeoutExecutor($this->executor, 5.0);
3939

4040
$ref = new \ReflectionProperty($executor, 'loop');
41-
$ref->setAccessible(true);
41+
if (\PHP_VERSION_ID < 80100) {
42+
$ref->setAccessible(true);
43+
}
4244
$loop = $ref->getValue($executor);
4345

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

tests/Query/UdpTransportExecutorTest.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ public function testCtorShouldAcceptNameserverAddresses($input, $expected)
3030
$executor = new UdpTransportExecutor($input, $loop);
3131

3232
$ref = new \ReflectionProperty($executor, 'nameserver');
33-
$ref->setAccessible(true);
33+
if (\PHP_VERSION_ID < 80100) {
34+
$ref->setAccessible(true);
35+
}
3436
$value = $ref->getValue($executor);
3537

3638
$this->assertEquals($expected, $value);
@@ -69,7 +71,9 @@ public function testCtorWithoutLoopShouldAssignDefaultLoop()
6971
$executor = new UdpTransportExecutor('127.0.0.1');
7072

7173
$ref = new \ReflectionProperty($executor, 'loop');
72-
$ref->setAccessible(true);
74+
if (\PHP_VERSION_ID < 80100) {
75+
$ref->setAccessible(true);
76+
}
7377
$loop = $ref->getValue($executor);
7478

7579
$this->assertInstanceOf(LoopInterface::class, $loop);
@@ -132,7 +136,9 @@ public function testQueryRejectsIfServerConnectionFails()
132136
$executor = new UdpTransportExecutor('::1', $loop);
133137

134138
$ref = new \ReflectionProperty($executor, 'nameserver');
135-
$ref->setAccessible(true);
139+
if (\PHP_VERSION_ID < 80100) {
140+
$ref->setAccessible(true);
141+
}
136142
$ref->setValue($executor, '///');
137143

138144
$query = new Query('google.com', Message::TYPE_A, Message::CLASS_IN);
@@ -161,7 +167,9 @@ public function testQueryRejectsIfSendToServerFailsAfterConnectionWithoutCalling
161167

162168
// increase hard-coded maximum packet size to allow sending excessive data
163169
$ref = new \ReflectionProperty($executor, 'maxPacketSize');
164-
$ref->setAccessible(true);
170+
if (\PHP_VERSION_ID < 80100) {
171+
$ref->setAccessible(true);
172+
}
165173
$ref->setValue($executor, PHP_INT_MAX);
166174

167175
$error = null;

0 commit comments

Comments
 (0)