Implemented in PHP 8.3

RFC Categories

    Deprecate remains of string evaluated code assertions

    Author
    Target
    8.3
    Prior to PHP 7 assertions via the assert function could only operate on boolean values or with strings, in which case the string was evaluated and the result of...

    Accept Deprecate remains of string evaluated code assertions RFC?

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

    mb_str_pad

    Author
    Niels Dossche (nielsdos)
    Target
    8.3
    In PHP, various string functions are available in two variants: one for byte strings and another for multibyte strings. However, a notable absence among the mul...

    mb_str_pad

    Yes
    No
    Yes
    15 Votes (94%)
    No
    1 Votes (6%)

    Marking overridden methods (#[\Override])

    Author
    Target
    8.3
    When implementing an interface or inheriting from another class PHP performs various checks to ensure that implemented methods are compatible with the constrain...

    Implement the #[\Override] attribute as described?

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

    Make unserialize() emit a warning for trailing bytes

    Author
    Target
    8.3
    PHP silently accepts trailing bytes after a valid serialization payload when unserializing. This is undesirable.

    Make unserialize() emit a E_WARNING if the input contains trailing bytes?

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

    Define proper semantics for range() function

    Author
    Target
    8.3
    PHP's standard library implements the range() function, which generates an array of values going from a $start value to an $end value. By default values are gen...

    Accept Saner range() semantics RFC?

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

    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%)

    Saner array_(sum|product)()

    Author
    Target
    8.3
    PHP's standard library implements the array_sum() and array_product() which take an array of entries and adds/multiplies them together. These functions are high...

    Accept Saner array_(sum|product)() RFC?

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

    More Appropriate Date/Time Exceptions

    Author
    Target
    8.3
    This RFC proposes to introduce Date/Time extension specific exceptions and errors where this makes sense.

    More Appropriate Date/Time Exceptions

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

    Path to Saner Increment/Decrement operators

    Author
    Target
    8.3
    PHP's increment and decrement operators can have some surprising behaviours when used with types other than int and float. Various previous attempts 1) 2) 3) ha...

    Accept Path to Saner Increment/Decrement operators RFC?

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

    Allow arbitrary static variable initializers in PHP 8.3?

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

    Add dynamic class constant fetches to PHP 8.3?

    Yes
    No
    Yes
    15 Votes (79%)
    No
    4 Votes (21%)

    Readonly amendments

    Author
    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%)

    Use exceptions by default in SQLite3 extension

    Author
    BohwaZ
    Author
    php at bohwaz dot net
    Target
    8.3
    The SQLite3 extension is still using PHP warnings by default. PDO is using exceptions, like everyone else.

    Use exceptions by default in SQLite3 extension as described in this RFC?

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

    Randomizer Additions

    Author
    Target
    8.3
    This RFC proposes to add new building block methods to \Random\Randomizer that implement commonly useful operations that are either verbose or very hard to impl...

    Add Randomizer::getBytesFromString()?

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

    Add Randomizer::nextFloat(), Randomizer::getFloat(), and the IntervalBoundary enum?

    Yes
    No
    Yes
    16 Votes (94%)
    No
    1 Votes (6%)

    json_validate

    Author
    Juan Carlos Morales
    Target
    8.3
    This RFC introduces a new function called json_validate() to validate if an string contains a valid json.

    json_validate

    Yes
    No
    Yes
    18 Votes (95%)
    No
    1 Votes (5%)

    Deprecations for PHP 8.3

    Author
    cmb
    Author
    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%)