kocsismate

kocsismate

Contributor Directory

RFCs

Language and policy proposals from this contributor
RFCs are part of the process by which decisions are made about PHP. For more information about the RFC process as well as viewing a full list of RFCs please visit the RFC section.

Query Parameter Manipulation Support

Author
Despite being the web's most prominent server-side language for over 30 years, PHP still lacks a proper built-in API for working with query parameters. The exis...

URI/URL Path Segment Support

Author
Sometimes, accessing path segments rather than the whole path as string is needed. When this is the case, splitting the path to segments manually after retrieva...

Followup Improvements for ext/uri

Author
Target
8.6
This RFC proposes a set of follow-up improvements to the URL Parsing API RFC. It extends the Uri\Rfc3986\Uri and Uri\WhatWg\Url classes with additional capabili...

Add URI building support as outlined in the RFC?

Yes
No
Abstain
Yes
21 Votes (91%)
No
0 Votes (0%)
Abstain
2 Votes (9%)

Add support for detecting URI type as outlined in the RFC?

Yes
No
Abstain
Yes
18 Votes (90%)
No
0 Votes (0%)
Abstain
2 Votes (10%)

Add support for host type detection as outlined in the RFC?

Yes
No
Abstain
Yes
17 Votes (94%)
No
0 Votes (0%)
Abstain
1 Votes (6%)

Add support for percent-encoding as outlined in the RFC?

Yes
No
Abstain
Yes
15 Votes (71%)
No
0 Votes (0%)
Abstain
6 Votes (29%)

Deprecations for PHP 8.4

Author
The RFC proposes to deprecate the listed functionality in PHP 8.4 and remove it in PHP 9 (except where otherwise noted).

Formally deprecate and remove the aforementioned DOMDocument and DOMEntity properties?

Yes
No
Yes
36 Votes (100%)
No
0 Votes (0%)

Remove DOMImplementation::getFeature($feature, $version)

Yes
No
Yes
38 Votes (100%)
No
0 Votes (0%)

Deprecate DOM_PHP_ERR constant?

Yes
No
Yes
37 Votes (100%)
No
0 Votes (0%)

Deprecate unserialize()’s ‘S’ tag?

Yes
No
Yes
36 Votes (100%)
No
0 Votes (0%)

Deprecate the INI settings ‘session.sid_length’ and ‘session.sid_bits_per_character’?

Yes
No
Yes
35 Votes (100%)
No
0 Votes (0%)

Deprecate SplFixedArray::__wakeup()?

Yes
No
Yes
36 Votes (100%)
No
0 Votes (0%)

Deprecate xml_set_object() and xml_set_*_handler() with string method names

Yes
No
Yes
33 Votes (100%)
No
0 Votes (0%)

Deprecate passing null and false to dba_key_split()

Yes
No
Yes
33 Votes (100%)
No
0 Votes (0%)

Deprecate passing incorrect data types for options to ext/hash functions

Yes
No
Yes
33 Votes (100%)
No
0 Votes (0%)

Deprecate constants SUNFUNCS_RET_STRING, SUNFUNCS_RET_DOUBLE, and SUNFUNCS_RET_TIMESTAMP?

Yes
No
Yes
32 Votes (100%)
No
0 Votes (0%)

Deprecate passing a non-empty string to the $escape parameter

Yes
No
Yes
26 Votes (93%)
No
2 Votes (7%)

Remove the E_STRICT Error Level and Deprecate the E_STRICT constant?

Yes
No
Yes
29 Votes (85%)
No
5 Votes (15%)

Deprecate strtok()?

Yes
No
Yes
6 Votes (18%)
No
27 Votes (82%)

Deprecate returning non-string values from a user output buffer handler?

Yes
No
Yes
23 Votes (85%)
No
4 Votes (15%)

Deprecate producing output in a user output handler?

Yes
No
Yes
25 Votes (93%)
No
2 Votes (7%)

Deprecate using an array as the $data argument for file_put_contents()

Yes
No
Yes
20 Votes (57%)
No
15 Votes (43%)

Deprecate mysqli_ping() and mysqli::ping()?

Yes
No
Yes
27 Votes (100%)
No
0 Votes (0%)

Deprecate mysqli_refresh(), mysqli::refresh() and related constants?

Yes
No
Yes
27 Votes (96%)
No
1 Votes (4%)

Deprecate mysqli_kill() and mysqli::kill()?

Yes
No
Yes
27 Votes (96%)
No
1 Votes (4%)

Deprecate the second parameter to mysqli_store_result()?

Yes
No
Yes
31 Votes (100%)
No
0 Votes (0%)

Deprecate lcg_value()?

Yes
No
Yes
29 Votes (94%)
No
2 Votes (6%)

Deprecate uniqid()?

Yes
No
Yes
14 Votes (38%)
No
23 Votes (62%)

Deprecate md5(), sha1(), md5_file(), and sha1_file()?

Yes
No
Yes
18 Votes (46%)
No
21 Votes (54%)

Deprecate passing E_USER_ERROR to trigger_error()

Yes
No
Yes
27 Votes (93%)
No
2 Votes (7%)

Deprecate using a single underscore as a class name?

Yes
No
Yes
28 Votes (80%)
No
7 Votes (20%)

Deprecate SOAP_FUNCTIONS_ALL constant and passing it to SoapServer::addFunction()?

Yes
No
Yes
28 Votes (97%)
No
1 Votes (3%)

Resource to object conversion

Author
Resources are a legacy data structure which were superseded by objects a long time ago. They have quite a few disadvantages like the inability of using resource...

Accept the described approach for converting resources to objects?

yes
no
yes
30 Votes (100%)
no
0 Votes (0%)

When should the migration of the primary stream resources happen?

only in a major version (e.g. PHP 9.0)
in any minor or major version (e.g. PHP 8.4)
only in a major version (e.g. PHP 9.0)
23 Votes (77%)
in any minor or major version (e.g. PHP 8.4)
7 Votes (23%)

When should the migration of the auxiliary stream resources happen?

only in a major version (e.g. PHP 9.0)
in any minor or major version (e.g. PHP 8.4)
only in a major version (e.g. PHP 9.0)
16 Votes (53%)
in any minor or major version (e.g. PHP 8.4)
14 Votes (47%)

When should the migration of the Process resource happen?

in the next major version (e.g. PHP 9.0)
in the next minor or major version (e.g. PHP 8.4)
in the next major version (e.g. PHP 9.0)
15 Votes (52%)
in the next minor or major version (e.g. PHP 8.4)
14 Votes (48%)

When should the migration of the resources of other extensions happen?

only in a major version (e.g. PHP 9.0)
in any minor or major version (e.g. PHP 8.4)
only in a major version (e.g. PHP 9.0)
12 Votes (41%)
in any minor or major version (e.g. PHP 8.4)
17 Votes (59%)

Deprecate functions with overloaded signatures

Author
Target
8.3
Method overloading may sound very familiar for Java developers, but PHP doesn't natively support this concept. In spite of this fact, due to historical reasons,...

Phase out the above mentioned signature of array_keys()?

Yes, deprecate in 8.4, remove in 9.0 or 10.0
Yes, deprecate in 8.4, remove in 10.0
No
Yes, deprecate in 8.4, remove in 9.0 or 10.0
13 Votes (45%)
Yes, deprecate in 8.4, remove in 10.0
1 Votes (3%)
No
15 Votes (52%)

Phase out the above mentioned signature of DatePeriod::__construct()?

Yes, deprecate in 8.4, remove in 9.0 or 10.0
Yes, deprecate in 8.4, remove in 10.0
No
Yes, deprecate in 8.4, remove in 9.0 or 10.0
23 Votes (100%)
Yes, deprecate in 8.4, remove in 10.0
0 Votes (0%)
No
0 Votes (0%)

Phase out the above mentioned signature of dba_fetch()?

Yes, deprecate in 8.3, remove in 9.0
No
Yes, deprecate in 8.3, remove in 9.0
24 Votes (100%)
No
0 Votes (0%)

Phase out the above mentioned signatures of FFI::cast(), FFI::new(), and FFI::type()?

Yes, deprecate in 8.3, remove in 9.0 or 10.0
Yes, deprecate in 8.3, remove in 10.0
No
Yes, deprecate in 8.3, remove in 9.0 or 10.0
19 Votes (100%)
Yes, deprecate in 8.3, remove in 10.0
0 Votes (0%)
No
0 Votes (0%)

Phase out the above mentioned signature of get_class()?

Yes, deprecate in 8.3, remove in 9.0 or 10.0
Yes, deprecate in 8.3, remove in 10.0
No
Yes, deprecate in 8.3, remove in 9.0 or 10.0
22 Votes (100%)
Yes, deprecate in 8.3, remove in 10.0
0 Votes (0%)
No
0 Votes (0%)

Phase out the above mentioned signatures of IntlCalendar::set() and intlcal_set()?

Yes, deprecate in 8.4, remove in 9.0 or 10.0
Yes, deprecate in 8.4, remove in 10.0
No
Yes, deprecate in 8.4, remove in 9.0 or 10.0
16 Votes (70%)
Yes, deprecate in 8.4, remove in 10.0
3 Votes (13%)
No
4 Votes (17%)

Phase out the above mentioned signatures of IntlGregorianCalendar::__construct() and intlgregcal_create_instance()?

Yes, deprecate in 8.4, remove in 9.0 or 10.0
Yes, deprecate in 8.4, remove in 10.0
No
Yes, deprecate in 8.4, remove in 9.0 or 10.0
16 Votes (70%)
Yes, deprecate in 8.4, remove in 10.0
3 Votes (13%)
No
4 Votes (17%)

Phase out the above mentioned signature of ldap_connect()?

Yes, deprecate in 8.4, remove in 9.0
No
Yes, deprecate in 8.4, remove in 9.0
21 Votes (100%)
No
0 Votes (0%)

Phase out the above mentioned signature of ldap_exop()?

Yes, deprecate in 8.4, remove in 9.0
No
Yes, deprecate in 8.4, remove in 9.0
19 Votes (100%)
No
0 Votes (0%)

Phase out the above mentioned signatures of pg_fetch_result(), pg_field_prtlen(), and pg_field_is_null()?

Yes, deprecate in 8.4, remove in 9.0 or 10.0
Yes, deprecate in 8.4, remove in 10.0
No
Yes, deprecate in 8.4, remove in 9.0 or 10.0
19 Votes (95%)
Yes, deprecate in 8.4, remove in 10.0
1 Votes (5%)
No
0 Votes (0%)

Phase out the above mentioned signature of Phar::setStub() and PharData::setStub()?

Yes, deprecate in 8.3, remove in 9.0
No
Yes, deprecate in 8.3, remove in 9.0
20 Votes (100%)
No
0 Votes (0%)

Phase out the above mentioned signature of ReflectionMethod::__construct()?

Yes, deprecate in 8.4, remove in 9.0 or 10.0
Yes, deprecate in 8.4, remove in 10.0
No
Yes, deprecate in 8.4, remove in 9.0 or 10.0
18 Votes (95%)
Yes, deprecate in 8.4, remove in 10.0
1 Votes (5%)
No
0 Votes (0%)

Phase out the above mentioned signatures of ReflectionProperty::setValue()?

Yes, deprecate in 8.3, remove in 9.0
No
Yes, deprecate in 8.3, remove in 9.0
16 Votes (76%)
No
5 Votes (24%)

Phase out the above mentioned signature of session_set_save_handler()?

Yes, deprecate in 8.4, remove in 9.0 or 10.0
Yes, deprecate in 8.4, remove in 10.0
No
Yes, deprecate in 8.4, remove in 9.0 or 10.0
17 Votes (77%)
Yes, deprecate in 8.4, remove in 10.0
4 Votes (18%)
No
1 Votes (5%)

Phase out the above mentioned signature of stream_context_set_option()?

Yes, deprecate in 8.4, remove in 9.0 or 10.0
Yes, deprecate in 8.4, remove in 10.0
No
Yes, deprecate in 8.4, remove in 9.0 or 10.0
18 Votes (75%)
Yes, deprecate in 8.4, remove in 10.0
5 Votes (21%)
No
1 Votes (4%)

Forbid the declaration of new overloaded signatures?

Yes
No
Yes
24 Votes (100%)
No
0 Votes (0%)

Deprecate implicitly nullable parameter types

Author
Target
8.4
PHP supports nullable type declarations as of PHP 7.1 with the ?T syntax, and with the T|null syntax as of PHP 8.0 when generalized support for union types was ...

Accept Deprecate implicitly nullable parameter types RFC?

Yes
No
Yes
26 Votes (100%)
No
0 Votes (0%)

Add RFC 3986 and WHATWG URL compliant API

Author
Target
8.5
URIs and URLs are one of the most fundamental concepts of the web because they make it possible to reference specific resources on a network. URLs were original...

Add the RFC 3986 and the WHATWG URL compliant API described above?

yes
no
yes
30 Votes (97%)
no
1 Votes (3%)

Dedicated StreamBucket class

Author
Target
8.4
When using user filters for stream processing, one of the fundamental concepts is stream buckets. A stream bucket is effectively a chunk of stream which can be ...

Add the StreamBucket class as proposed?

yes
no
yes
20 Votes (100%)
no
0 Votes (0%)

Deprecations for PHP 8.3

Author
Target
8.3
The RFC proposes to deprecate the listed functionality in PHP 8.3 and remove it in PHP 9.

Deprecate passing negative $widths to mb_strimwidth()

Yes
No
Yes
27 Votes (100%)
No
0 Votes (0%)

Deprecate and remove the NumberFormatter::TYPE_CURRENCY constant

Yes
No
Yes
29 Votes (100%)
No
0 Votes (0%)

Deprecate and remove the CRYPT_* constants?

Yes
No
Yes
14 Votes (58%)
No
10 Votes (42%)

Deprecate and remove the broken pre-PHP 7.1 Mt19937 implementation (MT_RAND_PHP)?

Yes
No
Yes
28 Votes (100%)
No
0 Votes (0%)

Deprecate the global Mt19937?

Yes
No
Yes
13 Votes (45%)
No
16 Votes (55%)

What to do with the non-integer functions using the global Mt19937 if the previous vote passes?

Deprecate together with mt_srand()
Convert to CSPRNG
Deprecate together with mt_srand()
1 Votes (4%)
Convert to CSPRNG
24 Votes (96%)

Deprecate and remove calling ldap_connect with 2 parameters $host and $port

Yes
No
Yes
26 Votes (100%)
No
0 Votes (0%)

Readonly amendments

Author
Target
8.3
PHP 8.1 added support for readonly properties via PHP RFC: Readonly properties 2.0, and PHP 8.2 added support for readonly classes via PHP RFC: Readonly classes...

Should non-readonly classes be able to extend readonly-classes?

Yes
No
Yes
7 Votes (37%)
No
12 Votes (63%)

Should it be possible to reinitialize readonly properties during cloning?

Yes
No
Yes
26 Votes (100%)
No
0 Votes (0%)

Typed class constants

Author
Target
8.3
Despite the huge efforts put into improving the type system of PHP year after year, it is still not possible to declare constant types. This is less of a concer...

Add support for typed class constants?

Yes
No
Yes
25 Votes (100%)
No
0 Votes (0%)

Readonly classes

Author
Target
8.2
PHP 8.1 added support for readonly properties via PHP RFC: Readonly properties 2.0. However, it's still not easy to declare (quasi-)immutable classes, especiall...

Add readonly classes as proposed?

Yes
No
Yes
28 Votes (80%)
No
7 Votes (20%)

Add return type declarations for internal methods

Author
Target
8.1
PHP 8.0 added parameter and return type declarations for the vast majority of internal functions and methods (Stubs initiative) because the different variance-r...

Add return type declarations for internal methods in the proposed schedule?

Yes
No
Yes
17 Votes (71%)
No
7 Votes (29%)

Final class constants

Author
Target
8.1
Currently, class constants are always overridable by child classes. This causes a few smaller caveats:

Add support for final class constants?

Yes
No
Yes
29 Votes (88%)
No
4 Votes (12%)

Deprecations for PHP 8.1

Author
Target
8.1
The RFC proposes to deprecate the listed functionality in PHP 8.1 and remove it in PHP 9.

Deprecate date_sunrise() and date_sunset()?

Yes
No
Yes
51 Votes (100%)
No
0 Votes (0%)

Deprecate key(), current(), next(), prev(), reset() on objects?

Yes
No
Yes
48 Votes (100%)
No
0 Votes (0%)

Deprecate mb_check_encoding() without argument?

Yes
No
Yes
44 Votes (100%)
No
0 Votes (0%)

Deprecate get_class(), get_parent_class() and get_called_class() without argument?

Yes
No
Yes
21 Votes (50%)
No
21 Votes (50%)

Deprecate FILE_BINARY and FILE_TEXT constants?

Yes
No
Yes
42 Votes (98%)
No
1 Votes (2%)

Deprecate t fopen mode?

Yes
No
Yes
13 Votes (43%)
No
17 Votes (57%)

Deprecate passing bool for $value argument of IntlCalendar::roll()?

Yes
No
Yes
38 Votes (100%)
No
0 Votes (0%)

Deprecate accessing static members on traits?

Yes
No
Yes
40 Votes (100%)
No
0 Votes (0%)

Deprecate strptime()?

Yes
No
Yes
35 Votes (92%)
No
3 Votes (8%)

Deprecate strftime() and gmstrftime()?

Yes
No
Yes
29 Votes (76%)
No
9 Votes (24%)

Deprecate mhash*() family of functions?

Yes
No
Yes
38 Votes (100%)
No
0 Votes (0%)

Deprecate int parameters to ctype_*() functions?

Yes
No
Yes
34 Votes (94%)
No
2 Votes (6%)

Deprecate return by reference with void type?

Yes
No
Yes
39 Votes (98%)
No
1 Votes (3%)

Deprecate NIL constant defined by the IMAP extension?

Yes
No
Yes
35 Votes (100%)
No
0 Votes (0%)

Deprecate calling overloaded pgsql functions without the connection argument?

Yes
No
Yes
36 Votes (97%)
No
1 Votes (3%)

Deprecate $num_points parameter of image(open|filled)polygon?

Yes
No
Yes
20 Votes (69%)
No
9 Votes (31%)

Deprecate mysqli::init()?

Yes
No
Yes
34 Votes (100%)
No
0 Votes (0%)

Deprecate filter.default ini setting?

Yes
No
Yes
28 Votes (88%)
No
4 Votes (13%)

Deprecate auto_detect_line_endings ini setting?

Yes
No
Yes
38 Votes (100%)
No
0 Votes (0%)

Deprecate ssl_method option to SoapClient constructor?

Yes
No
Yes
25 Votes (96%)
No
1 Votes (4%)

Deprecate FILTER_SANITIZE_STRING?

Yes
No
Yes
36 Votes (100%)
No
0 Votes (0%)

Deprecate oci8.old_oci_close_semantics INI setting?

Yes
No
Yes
27 Votes (100%)
No
0 Votes (0%)

Deprecate odbc_result_all()?

Yes
No
Yes
34 Votes (100%)
No
0 Votes (0%)

Mixed Type v2

Author
With the addition of scalar types in PHP 7, nullables in 7.1, object in 7.2, and lastly, union types in 8.0, people writing PHP code can explicitly declare type...

Add mixed as a type to be used as parameter, return and class property types?

Yes
No
Yes
50 Votes (82%)
No
11 Votes (18%)

Locale-independent float to string cast

Author
Target
8.0
The string representation of floats in PHP depends on the current locale as the decimal separator varies between locales. This can lead to subtle bugs in certai...

Make float to string casts always locale-independent?

Yes
No
Yes
42 Votes (98%)
No
1 Votes (2%)

Should the debug_locale_sensitive_float_casts INI setting be added?

Yes
No
Yes
14 Votes (35%)
No
26 Votes (65%)

Write-Once Properties

Author
Target
8.0
This RFC proposes to add support for a new property modifier that would allow properties to be initialized, but not modified afterwards. This feature would be u...

Do you want to add support for write-once properties?

Yes
No
Yes
23 Votes (50%)
No
23 Votes (50%)

Which keyword to use?

immutable
locked
writeonce
readonly
immutable
2 Votes (5%)
locked
1 Votes (2%)
writeonce
7 Votes (16%)
readonly
34 Votes (77%)

Wall-Clock Time Based Execution Timeout

Author
Target
8.1
On most platforms, PHP currently measures the request timeout based on CPU time, rather than wall-clock time, so neither sleep(), nor network or system calls co...

Clone with

Author
Target
8.3
With the advent of standards promoting quasi-immutable objects, like PSR-7, wither methods became increasingly widely used. This practice is the de facto standa...