Description
Related to #23
See the discussion in https://externals.io/message/111878
Currently, for ldap_sasl_bind, null
is coerced to the empty string for string $bind_rdn = UNKNOWN
with strict_types=0, and is a TypeError in strict_types=1, and the stubs use UNKNOWN
.
If it's safe to change the default to the empty string or null, it'd be an improvement to do so - I'm not familiar with the ldap implementation (etc) in detail.
Mentioned by @MCMic - I assume it'll be possible until 8.0 is stable if done in a backwards compatible way
EDIT: It seems like most other things are correct other than ldap. Documenting the reasons why UNKNOWN had to be used in a line comment above the stub would help contributors or PECL maintainers writing new stubs. E.g. https://www.php.net/dateperiod has multiple signatures.
ext/date/php_date.stub.php
402: public function __construct($start, $interval = UNKNOWN, $end = UNKNOWN, $options = UNKNOWN) {}
ext/dba/dba.stub.php
12:function dba_popen($path, $mode, $handlername = UNKNOWN, ...$handler_parameters) {}
21:function dba_open($path, $mode, $handlername = UNKNOWN, ...$handler_parameters) {}
37:function dba_fetch($key, $skip, $handle = UNKNOWN): string|false {}
ext/gd/gd.stub.php
126:function imagegd(GdImage $im, string $to = UNKNOWN): bool {}
128:function imagegd2(GdImage $im, string $to = UNKNOWN, int $chunk_size = UNKNOWN, int $type = UNKNOWN): bool {}
ext/imap/php_imap.stub.php
8:function imap_open(string $mailbox, string $user, string $password, int $options = 0, int $n_retries = 0, array $params = UNKNOWN) {}
30:function imap_headerinfo($stream_id, int $msg_no, int $from_length = 0, int $subject_length = 0, string $default_host = UNKNOWN): stdClass|false {}
36:function imap_header($stream_id, int $msg_no, int $from_length = 0, int $subject_length = 0, string $default_host = UNKNOWN): stdClass|false {}
151:function imap_append($stream_id, string $folder, string $message, string $options = UNKNOWN, string $internal_date = UNKNOWN): bool {}
183:function imap_sort($stream_id, int $criteria, int $reverse, int $options = 0, string $search_criteria = UNKNOWN, string $charset = UNKNOWN): array|false {}
261:function imap_mail(string $to, string $subject, string $message, string $additional_headers = UNKNOWN, string $cc = UNKNOWN, string $bcc = UNKNOWN, string $rpath = UNKNOWN): bool {}
ext/intl/php_intl.stub.php
31:function intlcal_set(IntlCalendar $calendar, int $year, int $month, int $dayOfMonth = UNKNOWN, int $hour = UNKNOWN, int $minute = UNKNOWN, int $second = UNKNOWN): bool {}
108:function intlgregcal_create_instance($timeZoneOrYear = UNKNOWN, $localeOrMonth = UNKNOWN, $dayOfMonth = UNKNOWN, $hour = UNKNOWN, $minute = UNKNOWN, $second = UNKNOWN): ?IntlGregorianCalendar {}
ext/ldap/ldap.stub.php
7:function ldap_connect(string $hostname = UNKNOWN, int $port = 389, string $wallet = UNKNOWN, string $wallet_passwd = UNKNOWN, int $authmode = GSLC_SSL_NO_AUTH) {}
10:function ldap_connect(string $hostname = UNKNOWN, int $port = 389) {}
23:function ldap_bind($link_identifier, string $bind_rdn = UNKNOWN, string $bind_password = UNKNOWN): bool {}
29:function ldap_bind_ext($link_identifier, string $bind_rdn = UNKNOWN, string $bind_password = UNKNOWN, array $servercontrols = []) {}
33:function ldap_sasl_bind($link, string $binddn = UNKNOWN, string $password = UNKNOWN, string $sasl_mech = UNKNOWN, string $sasl_realm = UNKNOWN, string $sasl_authc_id = UNKNOWN, string $sasl_authz_id = UNKNOWN, string $props = UNKNOWN): bool {}
88:function ldap_first_attribute($link_identifier, $result_entry_identifier, int $dummy_ber = UNKNOWN): string|false {}
94:function ldap_next_attribute($link_identifier, $result_entry_identifier, int $dummy_ber = UNKNOWN): string|false {}
ext/odbc/odbc.stub.php
20:function odbc_execute($result_id, array $parameters_array = UNKNOWN): bool {}
34:function odbc_exec($connection_id, string $query, int $flags = UNKNOWN) {}
41:function odbc_do($connection_id, string $query, int $flags = UNKNOWN) {}
58:function odbc_fetch_row($result_id, int $row_number = UNKNOWN): bool {}
120:function odbc_error($connection_id = UNKNOWN): string {}
123:function odbc_errormsg($connection_id = UNKNOWN): string {}
132:function odbc_tables($connection_id, ?string $qualfier = null, string $owner = UNKNOWN, string $name = UNKNOWN, string $table_types = UNKNOWN) {}
138:function odbc_columns($connection_id, ?string $qualifier = null, string $owner = UNKNOWN, string $table_name = UNKNOWN, string $column_name = UNKNOWN) {}
157:function odbc_procedurecolumns($connection_id, ?string $qualifier = null, string $owner = UNKNOWN, string $proc = UNKNOWN, string $column = UNKNOWN) {}
163:function odbc_procedures($connection_id, ?string $qualifier = null, string $owner = UNKNOWN, string $name = UNKNOWN) {}
ext/pdo_pgsql/pgsql_driver.stub.php
8: public function pgsqlCopyFromArray(string $table_name, array $rows, string $delimiter = "\t", string $null_as = "\\\\N", string $fields = UNKNOWN) {}
11: public function pgsqlCopyFromFile(string $table_name, string $filename, string $delimiter = "\t", string $null_as = "\\\\N", string $fields = UNKNOWN) {}
14: public function pgsqlCopyToArray(string $table_name, string $delimiter = "\t", string $null_as = "\\\\N", string $fields = UNKNOWN) {}
17: public function pgsqlCopyToFile(string $table_name, string $filename, string $delimiter = "\t", string $null_as = "\\\\N", string $fields = UNKNOWN) {}
ext/pgsql/pgsql.stub.php
// EDIT: Never mind, the $connection can be omitted to use the default connection. This is discouraged in docs.
// https://www.php.net/manual/en/function.pg-query-params.php
45:function pg_parameter_status($connection, string $param_name = UNKNOWN): string|false {}
54:function pg_query($connection, string $query = UNKNOWN) {}
61:function pg_exec($connection, string $query = UNKNOWN) {}
68:function pg_query_params($connection, $query, array $params = UNKNOWN) {}
74:function pg_prepare($connection, string $stmt_name, string $query = UNKNOWN) {}
81:function pg_execute($connection, $stmt_name, array $params = UNKNOWN) {}
159:function pg_fetch_result($result, $row_number, string|int $field = UNKNOWN): string|false|null {}
166:function pg_result($result, $row_number, string|int $field = UNKNOWN): string|false|null {}
199:function pg_field_prtlen($result, $row_number, string|int $field = UNKNOWN): int|false {}
206:function pg_fieldprtlen($result, $row_number, string|int $field = UNKNOWN): int|false {}
212:function pg_field_is_null($result, $row_number, string|int $field = UNKNOWN): int|false {}
219:function pg_fieldisnull($result, $row_number, string|int $field = UNKNOWN): int|false {}
249:function pg_lo_create($connection = UNKNOWN, $large_object_id = UNKNOWN): string|int|false {}
256:function pg_locreate($connection = UNKNOWN, $large_object_id = UNKNOWN): string|int|false {}
262:function pg_lo_unlink($connection, $large_object_id = UNKNOWN): bool {}
269:function pg_lounlink($connection, $large_object_id = UNKNOWN): bool {}
276:function pg_lo_open($connection, $large_object_id = UNKNOWN, string $mode = UNKNOWN) {}
284:function pg_loopen($connection, $large_object_id = UNKNOWN, string $mode = UNKNOWN) {}
328:function pg_lo_import($connection, $filename = UNKNOWN, $large_object_id = UNKNOWN): string|int|false {}
337:function pg_loimport($connection, $filename = UNKNOWN, $large_object_id = UNKNOWN): string|int|false {}
345:function pg_lo_export($connection, $large_object_id = UNKNOWN, $filename = UNKNOWN): bool {}
354:function pg_loexport($connection, $large_object_id = UNKNOWN, $filename = UNKNOWN): bool {}
366:function pg_set_error_verbosity($connection, int $verbosity = UNKNOWN): int|false {}
369:function pg_set_client_encoding($connection, string $encoding = UNKNOWN): int {}
375:function pg_setclientencoding($connection, string $encoding = UNKNOWN): int {}
390:function pg_put_line($connection, string $query = UNKNOWN): bool {}
399:function pg_escape_string($connection, string $data = UNKNOWN): string {}
402:function pg_escape_bytea($connection, string $data = UNKNOWN): string {}
407:function pg_escape_literal($connection, string $data = UNKNOWN): string|false {}
410:function pg_escape_identifier($connection, string $data = UNKNOWN): string|false {}
ext/reflection/php_reflection.stub.php
326: public function getStaticPropertyValue(string $name, mixed $default = UNKNOWN) {}
386: public function setValue(mixed $objectOrValue, mixed $value = UNKNOWN) {}
ext/session/session.stub.php
46:function session_set_save_handler($open, $close = UNKNOWN, callable $read = UNKNOWN, callable $write = UNKNOWN, callable $destroy = UNKNOWN, callable $gc = UNKNOWN, callable $create_sid = UNKNOWN, callable $validate_sid = UNKNOWN, callable $update_timestamp = UNKNOWN): bool {}
ext/soap/soap.stub.php
16: public function __construct(string $namespace, string $name, mixed $data = UNKNOWN, bool $mustunderstand = false, string|int|null $actor = null) {}
ext/spl/spl_iterators.stub.php
77: public function getSubIterator(int $level = UNKNOWN) {}
119: public function __construct($iterator, string $class_name = UNKNOWN) {}
ext/standard/basic_functions.stub.php
111:function array_walk(array|object &$input, callable $callback, mixed $argument = UNKNOWN): bool {}
113:function array_walk_recursive(array|object &$input, callable $callback, mixed $argument = UNKNOWN): bool {}
158:function array_keys(array $array, mixed $filter_value = UNKNOWN, bool $strict = false): array {}
537:function assert_options(int $what, $value = UNKNOWN): array|object|int|string|null {}
// not very useful to change, max=mt_getrandmax() and argument count must be 0 or 2
1185:function rand(int $min = UNKNOWN, int $max = UNKNOWN): int {}
1187:function mt_rand(int $min = UNKNOWN, int $max = UNKNOWN): int {}
1218:function stream_context_set_option($context, array|string $wrapper_or_options, ?string $option_name = null, mixed $value = UNKNOWN): bool {}
1233:function stream_filter_prepend($stream, string $filtername, int $read_write = 0, mixed $params = UNKNOWN) {}
1239:function stream_filter_append($stream, string $filtername, int $read_write = 0, mixed $params = UNKNOWN) {}
ext/xmlwriter/php_xmlwriter.stub.php
83:function xmlwriter_write_dtd_entity(XMLWriter $xmlwriter, string $name, string $content, bool $isparam = false, string $publicId = UNKNOWN, string $systemId = UNKNOWN, string $ndataid = UNKNOWN): bool {}