Implemented in PHP 8.1

RFC Categories

    Make reflection setAccessible() no-op

    Author
    Marco Pivetta
    Target
    8.1
    The `ext-reflection` API is designed to inspect static details of a code-base, as well as reading and manipulating runtime state and calling internal details of...

    Make reflection setAccessible() no-op

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

    Readonly properties 2.0

    Author
    Target
    8.1
    This RFC introduces a readonly property modifier, which prevents modification of the property after initialization.

    Add readonly properties as proposed?

    Yes
    No
    Yes
    38 Votes (78%)
    No
    11 Votes (22%)

    Deprecate autovivification on false

    Author
    Target
    8.1
    PHP natively allows for autovivification (auto-creation of arrays from falsey values). This feature is very useful and used in a lot of PHP projects, especially...

    Deprecate autovivification from false?

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

    First-class callable syntax

    Author
    Author
    Target
    8.1
    This RFC proposes the introduction of a first-class callable syntax, which supersedes existing encodings using strings and arrays. The advantage is that the new...

    Introduce first-class callable syntax as proposed?

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

    Add IntlDatePatternGenerator

    Author
    Mel Dafert
    Target
    8.1
    PHP currently does not provide a way to flexibly create localized date formats, even though the underlying ICU library exposes such functionality already.

    Add IntlDatePatternGenerator?

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

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

    Add fetch_column method to mysqli

    Author
    Target
    8.1
    There are 3 methods in mysqli that return arrays from result set, one that returns stdClass object, and one that returns an array of arrays. However, mysqli doe...

    Add mysqli_fetch_column to mysqli?

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

    Pure intersection types

    Author
    Target
    8.1
    An intersection type requires a value to satisfy multiple type constraints instead of a single one.

    Add pure intersection types to PHP

    Yes
    No
    Yes
    30 Votes (91%)
    No
    3 Votes (9%)

    noreturn type

    Author
    Matt Brown
    Target
    8.1
    There has been a trend over the past few years that concepts initially just expressed in PHP docblocks eventually become native PHP types. Past examples are: sc...

    Add noreturn type

    Yes
    No
    Yes
    42 Votes (79%)
    No
    11 Votes (21%)

    noreturn vs never

    noreturn
    never
    noreturn
    14 Votes (29%)
    never
    34 Votes (71%)

    Fibers

    Author
    Author
    Target
    8.1
    For most of PHPs history, people have written PHP code only as synchronous code. Execution of functions stops until a result is available to return from the fun...

    Add Fibers to PHP?

    Yes
    No
    Yes
    50 Votes (78%)
    No
    14 Votes (22%)

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

    New in initializers

    Author
    Target
    8.1
    This RFC proposes to allow use of new expressions inside parameter default values, attribute arguments, static variable initializers and global constant initial...

    Support new in initializers as proposed?

    Yes
    No
    Yes
    43 Votes (96%)
    No
    2 Votes (4%)

    Static variables in inherited methods

    Author
    Target
    8.1
    When a method containing static variables is inherited, the inherited method currently uses an independent set of static variables. This RFC proposes to only ha...

    Change static variable inheritance as proposed?

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

    Deprecations for PHP 8.1

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

    mysqli bind in execute

    Author
    Target
    8.1
    PDO has always offered binding values to the prepared statement directly in the execute() call by providing an array with the values. The same functionality was...

    MySQLi bind-in-execute

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

    Deprecate implicit non-integer-compatible float to int conversions

    Author
    Target
    8.1
    PHP is a dynamically typed language and as such implicit type coercion naturally arises, most of these are harmless and rather convenient. However, float to int...

    Accept Deprecate implicit non-integer-compatible float to int conversions RFC proposal

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

    fsync() function

    Author
    David Gebler
    Target
    8.1
    fsync() is a function similar to fflush(), however where fflush() only instructs the application to flush its internal buffers out to the OS, fsync() further in...

    fsync Function

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

    Change Default mysqli Error Mode

    Author
    Target
    8.1
    The current default error mode for mysqli is silent. This means that when an SQL error occurs, no errors or warnings may be emitted and no exceptions are thrown...

    Change Default mysqli Error Mode

    Yes
    No
    Yes
    21 Votes (70%)
    No
    9 Votes (30%)

    Array unpacking with string keys

    Author
    Target
    8.1
    PHP 7.4 added support for unpacking inside arrays through the spread_operator_for_array RFC. At the time, unpacking of string keys was prohibited, both due to u...

    Allow string keys in array unpacking?

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

    Add array_is_list(array $array): bool

    Author
    Target
    8.1
    PHP's array data type is rare in that it supports both integer and string keys, and that iteration order is guaranteed. While it is possible to efficiently chec...

    Add the function array_is_list(array $array): bool to PHP?

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

    Phasing out Serializable

    Author
    Target
    8.1
    The new custom object serialization mechanism RFC introduced new __serialize() and __unserialize() magic methods in PHP 7.4, with the intent of replacing the br...

    Phase out Serializable as proposed?

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

    Enumerations

    Author
    Author
    Target
    8.1
    This RFC introduces Enumerations to PHP. The scope of this RFC is limited to unit enumerations, that is, enumerations that are themselves a value, rather than ...

    Include Enumerations in PHP

    Yes
    No
    Yes
    44 Votes (86%)
    No
    7 Votes (14%)

    Restrict $GLOBALS usage

    Author
    Target
    8.1
    The $GLOBALS variable currently provides a direct reference to PHP's internal symbol table. Supporting this requires significant technical complexity, affects p...

    Restrict $GLOBALS usage as specified?

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

    Deprecate passing null to non-nullable arguments of internal functions

    Author
    Target
    8.1
    Internal functions (defined by PHP or PHP extensions) currently silently accept null values for non-nullable arguments in coercive typing mode. This is contrary...

    Deprecate passing null to non-nullable arguments of internal functions?

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

    Explicit octal integer literal notation

    Author
    Target
    8.1
    PHP's literal octal notation can lead to some confusing results such as 16 === 016 evaluating to false. This is because 016 is evaluated as an octal integer and...

    Add support for explicit octal notation

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