} else if (zend_string_equals_literal(key, "ai_family")) {
hints.ai_family = zval_get_long(hint);
} else {
- /* TODO Promote to warning/error? */
- php_error_docref(NULL, E_NOTICE, "Unknown hint %s", ZSTR_VAL(key));
+ zend_argument_value_error(3, "must only contain array keys \"ai_flags\", \"ai_socktype\", "
+ "\"ai_protocol\", or \"ai_family\"");
+ RETURN_THROWS();
}
}
} ZEND_HASH_FOREACH_END();
}
--FILE--
<?php
-$addrinfo = socket_addrinfo_lookup('127.0.0.1', 2000, array(
- 'ai_family' => AF_INET,
- 'ai_socktype' => SOCK_DGRAM,
- 'invalid' => null,
-));
-var_dump($addrinfo[0]);
-echo "Done";
-?>
---EXPECTF--
-Notice: socket_addrinfo_lookup(): Unknown hint invalid in %ssocket_addrinfo_lookup.php on line %d
-object(AddressInfo)#%d (0) {
+try {
+ $addrinfo = socket_addrinfo_lookup('127.0.0.1', 2000, array(
+ 'ai_family' => AF_INET,
+ 'ai_socktype' => SOCK_DGRAM,
+ 'invalid' => null,
+ ));
+ var_dump($addrinfo[0]);
+} catch (\ValueError $e) {
+ echo $e->getMessage(), \PHP_EOL;
}
-Done
+?>
+--EXPECT--
+socket_addrinfo_lookup(): Argument #3 ($hints) must only contain array keys "ai_flags", "ai_socktype", "ai_protocol", or "ai_family"