@@ -13,15 +13,26 @@ final class HappyEyeBallsConnector implements ConnectorInterface
13
13
private $ connector ;
14
14
private $ resolver ;
15
15
16
- public function __construct (LoopInterface $ loop = null , ConnectorInterface $ connector = null , ResolverInterface $ resolver = null )
16
+ /**
17
+ * @param ?LoopInterface $loop
18
+ * @param ConnectorInterface $connector
19
+ * @param ResolverInterface $resolver
20
+ */
21
+ public function __construct ($ loop = null , $ connector = null , $ resolver = null )
17
22
{
18
23
// $connector and $resolver arguments are actually required, marked
19
24
// optional for technical reasons only. Nullable $loop without default
20
25
// requires PHP 7.1, null default is also supported in legacy PHP
21
26
// versions, but required parameters are not allowed after arguments
22
27
// with null default. Mark all parameters optional and check accordingly.
23
- if ($ connector === null || $ resolver === null ) {
24
- throw new \InvalidArgumentException ('Missing required $connector or $resolver argument ' );
28
+ if ($ loop !== null && !$ loop instanceof LoopInterface) { // manual type check to support legacy PHP < 7.1
29
+ throw new \InvalidArgumentException ('Argument #1 ($loop) expected null|React\EventLoop\LoopInterface ' );
30
+ }
31
+ if (!$ connector instanceof ConnectorInterface) { // manual type check to support legacy PHP < 7.1
32
+ throw new \InvalidArgumentException ('Argument #2 ($connector) expected React\Socket\ConnectorInterface ' );
33
+ }
34
+ if (!$ resolver instanceof ResolverInterface) { // manual type check to support legacy PHP < 7.1
35
+ throw new \InvalidArgumentException ('Argument #3 ($resolver) expected React\Dns\Resolver\ResolverInterface ' );
25
36
}
26
37
27
38
$ this ->loop = $ loop ?: Loop::get ();
0 commit comments