Implemented in PHP 8.6

RFC Categories

    Readonly Property Defaults

    Author
    Nick Sdot
    Target
    8.6
    This RFC seeks to allow default values for instance readonly properties. Historically, default values on readonly properties were not disallowed for technical r...

    Allow readonly properties to have default values as outlined in the RFC?

    Yes
    No
    Abstain
    Yes
    24 Votes (83%)
    No
    0 Votes (0%)
    Abstain
    5 Votes (17%)

    Allow Object Property Writes on Objects Referenced by Constants

    Author
    Khaled Alam
    Target
    8.6
    This RFC allows writing to object properties (and isset() / unset() on properties) when the object instance is referenced by a constant.

    Accept the RFC Allow Object Property Writes on Objects Referenced by Constants?

    Yes
    No
    Abstain
    Yes
    17 Votes (68%)
    No
    2 Votes (8%)
    Abstain
    6 Votes (24%)

    Duration class

    Author
    Author
    Target
    8.6
    Measuring and defining elapsed time is a ubiquitous concept in programming languages. Use cases where accurately defining such duration include defining timeout...

    Implement the Time\Duration class as outlined in the RFC?

    Yes
    No
    Abstain
    Yes
    35 Votes (92%)
    No
    1 Votes (3%)
    Abstain
    2 Votes (5%)

    Should the mathematical operation methods of Time\Duration use full or abbreviated names?

    multiplyBy, divideBy, negate, absolute
    mul, divBy, neg, abs
    Abstain
    multiplyBy, divideBy, negate, absolute
    30 Votes (86%)
    mul, divBy, neg, abs
    2 Votes (6%)
    Abstain
    3 Votes (9%)

    Add Locale::getDisplayKeyword() and Locale::getDisplayKeywordValue()

    Author
    Target
    8.6
    This RFC proposes adding Locale::getDisplayKeyword() and Locale::getDisplayKeywordValue() to ext/intl, also with their procedural aliases. These APIs expose ICU...

    Should the aforementioned functions be added to PHP intl extension?

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

    Deprecate returning values from __construct() and __destruct()

    Author
    Target
    8.6
    A class constructor and destructor (Lifecycle Functions) are special in that they are not meant to be used like regular methods and called manually. Observing t...

    Deprecate returning values from __construct() and __destruct()?

    Yes
    No
    Abstain
    Yes
    39 Votes (100%)
    No
    0 Votes (0%)
    Abstain
    0 Votes (0%)

    Limit maximum number of filter chains

    Author
    Sjoerd Langkemper
    Target
    8.6
    This RFC proposes to introduce a limit on the number of filters that can be chained within a php://filter URL. The primary goal is to mitigate a class of securi...

    Implement a limit on the maximum number of filters as outlined in the RFC?

    Yes
    No
    Abstain
    Yes
    30 Votes (94%)
    No
    0 Votes (0%)
    Abstain
    2 Votes (6%)

    Polling API

    Author
    Target
    8.6

    Should the Polling API be added to PHP core?

    Yes
    No
    Abstain
    Yes
    33 Votes (87%)
    No
    1 Votes (3%)
    Abstain
    4 Votes (11%)

    #[\Override] for class constants

    Author
    Daniel Scherzer
    Target
    8.6
    In PHP 8.3, the #[\Override] attribute was added (marking_overriden_methods). In PHP 8.5, it was extended to allow use on properties (override_properties). This...

    Extend #[\Override] to target class constants?

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

    Debugable Enums

    Author
    Daniel Scherzer
    Target
    8.6
    Enumerations (enums) were introduced in PHP 8.1 (enumerations). The RFC specified that magic methods other than __call(), __callStatic(), and __invoke() would n...

    Allow __debugInfo() in enums?

    Yes
    No
    Abstain
    Yes
    16 Votes (70%)
    No
    2 Votes (9%)
    Abstain
    5 Votes (22%)

    Display Function Arguments in Errors

    Author
    Target
    8.6
    PHP errors (and warnings, notices, etc.) for built-in native functions show the function that raised them. However, the display of parameters in these errors is...

    Add a error_include_args INI setting as described

    Yes
    No
    Abstain
    Yes
    24 Votes (89%)
    No
    2 Votes (7%)
    Abstain
    1 Votes (4%)

    Default value for error_include_args

    "1"
    "0"
    Abstain
    "1"
    7 Votes (27%)
    "0"
    18 Votes (69%)
    Abstain
    1 Votes (4%)

    If error_include_args defaults to 1, default value in run-tests.php

    "1"
    "0"
    Abstain
    "1"
    1 Votes (5%)
    "0"
    7 Votes (35%)
    Abstain
    12 Votes (60%)

    enum SortDirection

    Author
    Target
    8.6
    PHPs standard library has no type-safe way to express sort direction. Today we use the integer constants SORT_ASC and SORT_DESC (which only work with array_mult...

    Implement the SortDirection enum as outlined in the RFC?

    Yes
    No
    Abstain
    Yes
    22 Votes (85%)
    No
    2 Votes (8%)
    Abstain
    2 Votes (8%)

    DocComments For Function Parameters

    Author
    Christian Schneider
    Target
    8.6
    PHP supports DocComments with the getDocComment() function in various Reflection classes but not in ReflectionParameter.

    Add DocComment support to function parameters as outlined in the RFC?

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

    Closure optimizations

    Author
    Target
    8.6
    This RFC proposes two new optimizations for closures (including arrow functions) that come with some theoretical BC breaks. The purpose of this RFC is to evalua...

    Add closure optimizations to PHP 8.6?

    Yes
    No
    Abstain
    Yes
    24 Votes (96%)
    No
    0 Votes (0%)
    Abstain
    1 Votes (4%)

    grapheme_strrev: strrev for grapheme cluster

    Author
    Yuya Hamada
    Target
    8.6
    This proposal is strrev for grapheme cluster unit function. Userland sometimes shows mb_strrev function, but mbstring(Unicode code point unit) can not support m...

    Add grapheme_strrev function

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

    Add Form Feed in Trim Functions

    Author
    Weilin Du
    Target
    8.6
    The trim(), ltrim(), and rtrim() functions strip whitespace (or other characters) from the beginning and end of a string. When the second parameter ($characters...

    Adding form feed in trim, ltrim and rtrim default character mask as outlined in the RFC in version 8.6?

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

    New function mysqli_quote_string

    Author
    Kamil Tekiela
    Target
    8.6
    This RFC proposes to add a new method mysqli::quote_string() to PHP, which should fix the last remaining SQL injection loophole and ease the development for use...

    Implement mysqli_quote_string() as outlined in the RFC?

    Yes
    No
    Abstain
    Yes
    15 Votes (71%)
    No
    2 Votes (10%)
    Abstain
    4 Votes (19%)

    Stream Error Handling Improvements

    Author
    Target
    8.6
    PHP's stream error handling has historically been inconsistent across different stream wrappers and operations. Errors are reported through various mechanisms -...

    Should the Stream Error Handling Improvements be added to PHP core?

    Yes
    No
    Abstain
    Yes
    25 Votes (81%)
    No
    1 Votes (3%)
    Abstain
    5 Votes (16%)

    Oniguruma maintenance end and end of mbregex

    Author
    Yuya Hamada
    Target
    8.6
    Oniguruma maintenance ended on 2025-04-24. PHP uses mbregex (mb_ereg...) functions. So we decide future of mbregex. This proposal is to end support for mbregex ...

    Drop support the mbregex functions, Deprecate 8.6 and delete 9.0

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

    clamp

    Author
    kylekatarnls
    Target
    8.6
    clamp checks if a comparable value is within a certain bound. If the value is in range it returns the value, if the value is not in range it returns the nearest...

    Add a clamp() function?

    Yes
    No
    Abstain
    Yes
    23 Votes (72%)
    No
    3 Votes (9%)
    Abstain
    6 Votes (19%)

    Partial Function Application (v2)

    Author
    Author
    Target
    8.6
    Partial Function Application (PFA) refers to the process of calling a function with only some of its required parameters, delaying the rest to a later time. It...

    Implement partial application as outlined in the RFC?

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

    isReadable/Writable reflection methods

    Author
    Author
    Target
    8.6
    The ReflectionProperty::isPublic() method, by design, indicates only if a property has a public flag set on it, nothing more. Prior to PHP 8.1, that implicitly...

    Implement isReadable/isWritable?

    Yes
    No
    Abstain
    Yes
    27 Votes (90%)
    No
    0 Votes (0%)
    Abstain
    3 Votes (10%)