@@ -13,15 +13,26 @@ final class HappyEyeBallsConnector implements ConnectorInterface
1313 private $ connector ;
1414 private $ resolver ;
1515
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 )
1722 {
1823 // $connector and $resolver arguments are actually required, marked
1924 // optional for technical reasons only. Nullable $loop without default
2025 // requires PHP 7.1, null default is also supported in legacy PHP
2126 // versions, but required parameters are not allowed after arguments
2227 // 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 ' );
2536 }
2637
2738 $ this ->loop = $ loop ?: Loop::get ();
0 commit comments