Home » Project » RFCs » Declined »

Declined

RFC Categories

    Pipe Assignment Operator

    Author
    Caleb White
    PHP 8.5 introduced the pipe operator (|>), enabling functional-style transformation chains. A common pattern is piping a variable through transformations and as...

    Implement the pipe assignment operator as outlined in the RFC?

    Yes
    No
    Abstain
    Yes
    14 Votes (42%)
    No
    12 Votes (36%)
    Abstain
    7 Votes (21%)

    __exists(), a magic method for distinguishing "missing" from "set to null"

    Author
    PHP's __isset() magic method has a structural ambiguity: it returns one bit but is asked two questions (does it exist? and is it non-null?). The language constr...

    Add __exists() magic method?

    Yes
    No
    Abstain
    Yes
    2 Votes (9%)
    No
    13 Votes (59%)
    Abstain
    7 Votes (32%)

    Bound-Erased Generic Types

    Author
    Seifeddine Gmati
    This RFC adds generic type syntax to PHP. Classes, interfaces, traits, functions, methods, closures, and arrow functions can declare type parameters; those para...

    Introduce bound-erased generics as outlined in the RFC?

    Yes
    No
    Abstain
    Yes
    7 Votes (19%)
    No
    19 Votes (53%)
    Abstain
    10 Votes (28%)

    Variance marker syntax

    +T / -T (Hack, Scala)
    in T / out T (C#, Kotlin)
    +T / -T (Hack, Scala)
    2 Votes (8%)
    in T / out T (C#, Kotlin)
    24 Votes (92%)

    array_path_get and array_path_exists functions

    Author
    Carlos Granados
    In PHP applications, it is very common to work with deeply nested arrays, especially when dealing with configuration data, decoded JSON payloads, request data, ...

    Implement array_path_get and array_path_exists functions as outlined in the RFC?

    Yes
    No
    Abstain
    Yes
    1 Votes (4%)
    No
    17 Votes (71%)
    Abstain
    6 Votes (25%)

    Remove the links to X.com from PHP.net

    Yes
    No
    Abstain
    Yes
    27 Votes (57%)
    No
    17 Votes (36%)
    Abstain
    3 Votes (6%)

    array_only_keys() and array_except_keys()

    Author
    Muhammed Arshid KV
    Working with arrays often requires selecting or excluding a subset of keys. Many frameworks provide helper functions like array_only_keys() and array_except_key...

    Add array_only_keys() and array_except_keys()

    Yes
    No
    Abstain
    Yes
    2 Votes (10%)
    No
    9 Votes (45%)
    Abstain
    9 Votes (45%)

    Allow Reassignment of Promoted Readonly Properties in Constructor

    Author
    Readonly properties and Constructor Property Promotion (CPP) don't mix well: any post-processing forces opting out of CPP.

    Allow Reassignment of Promoted Readonly Properties in Constructor?

    Yes
    No
    Abstain
    Yes
    11 Votes (41%)
    No
    10 Votes (37%)
    Abstain
    6 Votes (22%)

    Prefix and Suffix Functions

    Author
    Carlos Granados
    In PHP applications, its extremely common to normalize strings by conditionally adding, removing, or replacing a prefix or suffix. Today, developers typically i...

    Implement prefix and suffix functions as outlined in the RFC?

    Yes
    No
    Abstain
    Yes
    11 Votes (42%)
    No
    8 Votes (31%)
    Abstain
    7 Votes (27%)

    Should the $subject parameter be the first or the last parameter in the _replace functions?

    First
    Last
    Abstain
    First
    7 Votes (29%)
    Last
    16 Votes (67%)
    Abstain
    1 Votes (4%)

    let construct (Block Scoping)

    Author
    Seifeddine Gmati
    Author
    This RFC proposes the introduction of the let() construct, a new language construct for managing lifetimes of variables. It allows developers to define a block ...

    Add the let construct for block-scoping?

    Yes
    No
    Abstain
    Yes
    13 Votes (39%)
    No
    15 Votes (45%)
    Abstain
    5 Votes (15%)

    Create "split" as an alias to "explode"

    Author
    Vinicius Dias
    PHP has the concept of alias functions, where a function can have more than one name. Here are some examples of aliases:

    Create a new split alias for the explode function?

    Yes
    No
    Abstain
    Yes
    3 Votes (9%)
    No
    28 Votes (80%)
    Abstain
    4 Votes (11%)

    str_icontains

    Author
    Adam Cable
    PHP 8.0 introduced the str_contains function, which provides a clear and concise way to determine if a string contains a given substring. This was a significant...

    str_icontains

    Yes
    No
    Yes
    6 Votes (35%)
    No
    11 Votes (65%)

    Deprecate type juggling to and from bool type within the function type juggling context

    Author
    Target
    8.5
    PHP has a few type juggling contexts, which are described on the Type Juggling documentation page. Currently, there are 6:

    Accept Deprecate type juggling to and from bool type within the function type juggling context RFC?

    Yes
    No
    Yes
    10 Votes (48%)
    No
    11 Votes (52%)

    Single-Expression functions

    Author
    Dmitrii Derepko
    This RFC proposes an alternative syntax for single-expression functions using the => operator instead of curly braces and explicit return statements.

    Implement Single Expression Functions as outlined in the RFC?

    Yes
    No
    Yes
    6 Votes (25%)
    No
    18 Votes (75%)

    Never Parameters (v2)

    Author
    Daniel Scherzer
    For a use case, and the inspiration for this RFC, consider the case of the BackedEnum interface that was added in PHP 8.1. It is defined as:

    Allow never parameters

    Yes
    No
    Yes
    3 Votes (12%)
    No
    23 Votes (88%)

    Nested Classes

    Author
    Rob Landers
    Nested classes allow the definition of one class within another, enabling tighter encapsulation and better organization of related logic. This feature naturally...

    Nested Classes

    Yes
    No
    Yes
    2 Votes (9%)
    No
    20 Votes (91%)

    Optional Interfaces

    Author
    Juris Evertovskis
    PHP's implements keyword allows classes to declare that they implement one or more interfaces. This mechanism is strict: the specified interfaces must exist at ...

    Add the optional interfaces feature?

    Yes
    No
    Yes
    15 Votes (44%)
    No
    19 Votes (56%)

    Multibyte for levenshtein, mb_levenshtein function

    Author
    Yuya Hamada
    Multibyte levenshtein distances have feature requests in the past. Therefore, we would like to create the mb_levenshtein function to implement this.

    Add mb_levenshtein function

    Yes
    No
    Yes
    1 Votes (17%)
    No
    5 Votes (83%)

    Readonly hooks

    Author
    Author
    Nick Sdot
    Support for hooks on readonly properties was omitted from the original RFC, primarily to minimize complexity as there were questions around when it was safe to ...

    Approve backed readonly get hooks?

    Yes
    No
    Yes
    5 Votes (19%)
    No
    21 Votes (81%)

    Approve backed readonly set hooks?

    Yes
    No
    Yes
    13 Votes (59%)
    No
    9 Votes (41%)

    Static class

    Author
    Paul Morris
    Target
    8.4
    A static class is a class that cannot be instantiated, and whose members (properties and methods) are all static. Implicit static classes can be created today, ...

    Implement static classes as described?

    Yes
    No
    Yes
    11 Votes (35%)
    No
    20 Votes (65%)

    Final by default anonymous classes

    Author
    Daniil Gentili
    This RFC proposes to make anonymous classes final by default.

    Make final anonymous classes final by default?

    Yes
    No
    Yes
    21 Votes (60%)
    No
    14 Votes (40%)

    Add an optional open keyword for anonymous classes?

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

    Final anonymous classes

    Author
    Daniil Gentili
    This RFC proposes to add support for final anonymous classes.

    Add support for final anonymous classes?

    Yes
    No
    Yes
    8 Votes (33%)
    No
    16 Votes (67%)

    Change the edge case of round()

    Author
    Saki Takamachi
    round() can specify the operating mode when edge case values such as HALF_UP and HALF_DOWN are passed. For example, 0.285 is internally 0.28499999999999998. Sh...

    Change the edge case of round()

    Yes
    No
    Yes
    7 Votes (47%)
    No
    8 Votes (53%)

    Rounding Integers as int

    Author
    Marc Bennewitz
    PHP contains several build-in rounding functions round, ceil, floor and number_format.

    Rounding Integers as int

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

    Support optional suffix parameter in tempnam

    Author
    Athos Ribeiro
    The tempnam function allows users to optionally specify a prefix to be prepended to the generated filenames.

    Support optional suffix parameter in tempnam

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

    PHP Technical Committee

    Author
    Author
    The Open Source project that develops the PHP language and its reference implementation uses an RFC process to discuss and vote on proposed changes. This was cr...

    Introduce the PHP Technical Committee as defined in this RFC

    Yes
    No
    Yes
    10 Votes (32%)
    No
    21 Votes (68%)

    include cleanup

    Author
    Max Kellermann
    The PHP code base has grown over more than 2 decades, which leaves some room for code cleanups. While attempting to fix several crash bugs in the JIT, I found t...

    Should #include directives be cleaned up?

    Yes
    No
    Yes
    11 Votes (52%)
    No
    10 Votes (48%)

    Is it allowed to document an #include line with a code comment?

    Yes
    No
    Yes
    1 Votes (10%)
    No
    9 Votes (90%)

    Is it allowed to forward-declare structs/unions/typedefs?

    Yes
    No
    Yes
    1 Votes (13%)
    No
    7 Votes (88%)

    Is it allowed to split a large header to reduce dependencies?

    Yes
    No
    Yes
    12 Votes (67%)
    No
    6 Votes (33%)

    Destructuring Coalesce

    Author
    This RFC proposes adding an operator for default values in destructuring assignments.

    Add a destructuring coalesce feature as described?

    Yes
    No
    Yes
    14 Votes (56%)
    No
    11 Votes (44%)

    Asymmetric Visibility

    Author
    Author
    PHP has long had the ability to control the visibility of object properties -- public, private, or protected. However, that control is always the same for both...

    Include asymmetric visibility?

    Yes
    No
    Yes
    14 Votes (54%)
    No
    12 Votes (46%)

    If voting no, why?

    Dislike feature itself
    Syntax details
    Other (specify below)
    Dislike feature itself
    6 Votes (50%)
    Syntax details
    4 Votes (33%)
    Other (specify below)
    2 Votes (17%)

    Interface Default Methods

    Author
    Over time, authors sometimes want to add methods to an interface. Today, this causes large breakages to every implementor. This RFC proposes a way to reduce the...

    Interface Default Methods

    Yes
    No
    Yes
    15 Votes (47%)
    No
    17 Votes (53%)

    New Curl URL API

    Author
    Since version 7.62.0 of libcurl, 1 the library features a brand new URL API 2 that can be used to parse and generate URLs, using libcurls own parser. One of the...

    Add proposed new functional Curl URL API

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

    Short Closures 2.0

    Author
    Anonymous functions in PHP can be verbose, in part due to the need to manually import used variables. This makes code using simple closures hard to read and und...

    Add Short Closures as described in PHP 8.2?

    Yes
    No
    Yes
    27 Votes (63%)
    No
    16 Votes (37%)

    Create a global login system for php.net

    Author
    Currently there are different login systems all over php.net:

    1.1 Global login system

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

    1.2 Type of global login system

    Use oAuth provider GitHub
    Use own system (hosted on php.net)
    Use both
    Use oAuth provider GitHub
    1 Votes (6%)
    Use own system (hosted on php.net)
    14 Votes (88%)
    Use both
    1 Votes (6%)

    2.1 www.php.net use preferences

    Yes, only allow setting settings with account
    Yes, but still allow the old system with saving settings in cookies
    No
    Yes, only allow setting settings with account
    0 Votes (0%)
    Yes, but still allow the old system with saving settings in cookies
    12 Votes (100%)
    No
    0 Votes (0%)

    2.2 www.php.net user contributed notes

    Yes, only allow setting notes with account
    Yes, but still allow the old system
    No
    Yes, only allow setting notes with account
    2 Votes (17%)
    Yes, but still allow the old system
    1 Votes (8%)
    No
    9 Votes (75%)

    3.1 bugs.php.net login

    Yes
    No
    Yes
    3 Votes (27%)
    No
    8 Votes (73%)

    4.1 edit.php.net login

    Yes
    Yes, but still allow anonymous login
    Keep old login system completely
    Yes
    1 Votes (9%)
    Yes, but still allow anonymous login
    2 Votes (18%)
    Keep old login system completely
    8 Votes (73%)

    5.1 pecl.php.net login and pear.php.net login

    Yes
    No
    Yes
    3 Votes (27%)
    No
    8 Votes (73%)

    7.1 wiki.php.net

    Yes, fully migrate
    Yes, but still allow old login system
    No
    Yes, fully migrate
    4 Votes (33%)
    Yes, but still allow old login system
    0 Votes (0%)
    No
    8 Votes (67%)

    Stricter implicit boolean coercions

    Author
    Andreas Leathley
    When not using strict_types in PHP, scalar type coercions have become less lossy/surprising in the last years - non-number-strings cannot be passed to an int ty...

    Accept Stricter implicit boolean coercions RFC as proposed?

    Yes
    No
    Yes
    3 Votes (18%)
    No
    14 Votes (82%)

    Add array_group function

    Author
    Hassan Ahmed
    This RFC is to implement a new function to PHP that upgrades the functionality of array_column to group similar results that share the same index_key into a mul...

    Add array_group function to PHP

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

    Move to RNG functions into ext/random

    Author
    Go Kudo
    This is due to the historical background, starting with lcg.c / php_lcg.h, the first implementation of the linear congruential generator (LCG), followed by rand...

    User Defined Operator Overloads

    Author
    Jordan LeDoux
    Operator overloading in PHP is currently supported within the engine for C code, and has well engineered designs built into the structures for objects and class...

    Adopt user defined operator overloads as described?

    Yes
    No
    Yes
    21 Votes (47%)
    No
    24 Votes (53%)

    Nullable Intersection types

    Author
    Intersection types as currently accepted for PHP 8.1 are not nullable. This RFC proposes to make them so.

    Make intersection types nullable

    Yes
    No
    Yes
    12 Votes (32%)
    No
    26 Votes (68%)

    Preferred syntax

    "?" prefix
    "|null" suffix
    "?" prefix
    6 Votes (17%)
    "|null" suffix
    29 Votes (83%)

    Intersections should be

    without brackets around
    with brackets around
    allow both styles
    without brackets around
    1 Votes (3%)
    with brackets around
    27 Votes (77%)
    allow both styles
    7 Votes (20%)

    json_encode indentation

    Author
    Timon de Groot
    Programs can serialize data to JSON using the json_encode function. The function is widely used for generating JSON responses or payload over HTTP. Currently, i...

    Add support for changing the JSON indentation amount?

    Yes
    No
    Yes
    7 Votes (25%)
    No
    21 Votes (75%)

    Allow static properties in enums

    Author
    Although enums are immutable objects, it is often useful to have functions or methods that operate on enum instances. In many cases, it would make sense to decl...

    Allow static properties in enums

    Yes
    No
    Yes
    8 Votes (32%)
    No
    17 Votes (68%)

    Sealed Classes

    Author
    Saif Eddin Gmati
    Author
    Target
    8.2
    The purpose of inheritance is code reuse, for when you have a class that shares common functionality, and you want others to be able to extend it and make use o...

    Accept sealed classes RFC?

    Yes
    No
    Yes
    16 Votes (59%)
    No
    11 Votes (41%)

    Which syntax option do you prefer?

    `sealed` + `permits`
    `permits` only
    `for`
    `sealed` + `permits`
    12 Votes (44%)
    `permits` only
    15 Votes (56%)
    `for`
    0 Votes (0%)

    ImmutableIterable (immutable, rewindable, memory-efficient, allows any key&repeating keys)

    Author
    Currently, PHP does not provide a built-in way to store the state of an arbitrary iterable for reuse later (when the iterable has arbitrary keys, or when keys m...

    Add ImmutableIterable to core

    Yes
    No
    Yes
    2 Votes (18%)
    No
    9 Votes (82%)

    Reasons for voting against the ImmutableIterable RFC

    Object to the namespace choice
    Object to the name
    Object to the implementation
    Don't see a use case
    Other
    Object to the namespace choice
    1 Votes (7%)
    Object to the name
    5 Votes (33%)
    Object to the implementation
    3 Votes (20%)
    Don't see a use case
    0 Votes (0%)
    Other
    6 Votes (40%)

    var_representation() : readable alternative to var_export()

    Author
    var_export() is a function that gets structured information about the given variable. It is similar to var_dump() with one exception: the returned representatio...

    Add var_representation($value, int $flags=0): string to php?

    Yes
    No
    Yes
    9 Votes (47%)
    No
    10 Votes (53%)

    Object scoped RNG Implementations.

    Author
    Go Kudo
    PHP currently implements an RNG based on the Mersenne Twister, which can be used with mt_srand() and mt_rand().

    Add object-scoped RNG

    Yes
    No
    Yes
    3 Votes (14%)
    No
    19 Votes (86%)

    Dump results of expressions in `php -a`

    Author
    Many REPLs (Read-Eval-Print Loops) for other programming languages that I'm familiar with print a (possibly truncated) representation of the result of expressio...

    Dump results of expressions in `php -a` as described in this RFC

    Yes
    No
    Yes
    11 Votes (65%)
    No
    6 Votes (35%)

    Direct execution opcode file without php source code file

    Author
    chopins xiao
    The current OPCache cannot get rid of the source file to execute the opcode file. The path will allow OPCache direct execution opcode file without php source co...

    Add OPCache direct execution opcode without source file

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

    Short Functions

    Author
    Short lambdas / arrow functions offer a convenient, compact way to write simple closures as a single expression. This RFC offers the same convenience for named...

    Include short-function syntax in PHP

    Yes
    No
    Yes
    16 Votes (47%)
    No
    18 Votes (53%)

    PHP\iterable\any() and all() on iterables

    Author
    The primitives any() and all() are a common part of many programming languages and help in avoiding verbosity or unnecessary abstractions.

    Add PHP\iterable\any() and all() to PHP?

    Yes
    No
    Yes
    11 Votes (48%)
    No
    12 Votes (52%)

    Names to use: any()/all() or any_value()/all_values()

    any()/all()
    any_value()/all_values()
    any()/all()
    14 Votes (82%)
    any_value()/all_values()
    3 Votes (18%)

    Reasons for voting against this RFC

    Too small in scope
    Object to the choice of namespace
    Prefer the global namespace
    Confused about the implementation
    Prefer userland solutions
    Other
    Voted for this RFC
    Too small in scope
    5 Votes (23%)
    Object to the choice of namespace
    4 Votes (18%)
    Prefer the global namespace
    3 Votes (14%)
    Confused about the implementation
    1 Votes (5%)
    Prefer userland solutions
    3 Votes (14%)
    Other
    1 Votes (5%)
    Voted for this RFC
    5 Votes (23%)

    StackFrame class

    Author
    Target
    8.0
    The debug_backtrace() function currently returns stack trace frames as an array of arrays with information about the file, line, class, type, object, args and f...

    Add object-based debug_backtrace() alternative?

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

    Replace object-based trace for Throwable::getTrace()?

    Yes
    No
    Yes
    6 Votes (24%)
    No
    19 Votes (76%)

    Make constructors and destructors return void

    Author
    Benas Seliuginas
    Target
    8.0
    At the moment, constructors and destructors can return values. However, these magic methods are supposed to be void (according to the documentation) and should ...

    Make constructors/destructors return void?

    Yes
    No
    Yes
    34 Votes (61%)
    No
    22 Votes (39%)

    Allow void return type on constructors/destructors?

    Yes
    No
    Yes
    27 Votes (52%)
    No
    25 Votes (48%)

    Opcache optimization without any caching

    Author
    Currently, it isn't possible to enable optimizations without enabling caching. They should be orthogonal features - it's already possible to cache without optim...

    Add opcache.allow_cache ini setting to support opcode optimization without caching

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

    If you voted no on opcache.allow_cache, why?

    1
    2
    3
    4
    1
    8 Votes (100%)
    2
    0 Votes (0%)
    3
    0 Votes (0%)
    4
    0 Votes (0%)

    I would be interested in moving opcode optimizations into core

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

    Partial Function Application

    Author
    Paul Crovella
    Author
    Levi Morrison
    Author
    Joe Watkins
    Author
    Larry Garfield
    This proposal defines a syntax for partial function application in PHP. It has been designed to provide a maximum of functionality with a minimum of new syntax...

    Add partial function application PHP

    Yes
    No
    Yes
    29 Votes (59%)
    No
    20 Votes (41%)

    Pipe Operator v2

    Author
    Code like the following is quite common in procedural code:

    Pipe Operator

    Yes
    No
    Yes
    11 Votes (39%)
    No
    17 Votes (61%)

    Adopt this policy for future symbols defined by php-src and extension code?

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

    Match expression

    Author
    Target
    8.0

    Would you like to add match expressions to the language?

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

    Should the semicolon for match in statement form be optional?

    Yes
    No
    Yes
    3 Votes (13%)
    No
    20 Votes (87%)

    Should we allow dropping (true) condition?

    Yes
    No
    Yes
    16 Votes (80%)
    No
    4 Votes (20%)

    If you voted no, why?

    1
    2
    3
    4
    5
    6
    7
    8
    1
    0 Votes (0%)
    2
    10 Votes (43%)
    3
    0 Votes (0%)
    4
    1 Votes (4%)
    5
    0 Votes (0%)
    6
    3 Votes (13%)
    7
    0 Votes (0%)
    8
    9 Votes (39%)

    Rename T_PAAMAYIM_NEKUDOTAYIM to T_DOUBLE_COLON

    Author
    Author
    The T_PAAMAYIM_NEKUDOTAYIM token representing the :: characters sequence is often a source of confusion the first time it is encountered.

    Rename T_PAAMAYIM_NEKUDOTAYIM to T_DOUBLE_COLON?

    Yes
    No
    Yes
    44 Votes (59%)
    No
    30 Votes (41%)

    PHP Namespace in core

    Author
    Author
    The PHP project has reserved the right to use the \PHP namespace but has never acted upon starting to use it. We therefore propose that core symbols which canno...

    Accept PHP namespace in core RFC?

    Yes
    No
    Yes
    19 Votes (44%)
    No
    24 Votes (56%)

    Type casting in array destructuring expressions

    Author
    Enno Woortmann
    Target
    8.0
    Adds the possibility to cast values while using array or list destructuring expressions.

    Add type casting in array destructuring expressions

    yes
    no
    yes
    6 Votes (19%)
    no
    26 Votes (81%)

    Choose one or more of the suggested future scopes in which you are interested

    reference assignment casts
    strict casts
    nullable casts
    type checks in array destructuring expressions
    none
    reference assignment casts
    0 Votes (0%)
    strict casts
    16 Votes (27%)
    nullable casts
    19 Votes (32%)
    type checks in array destructuring expressions
    25 Votes (42%)
    none
    0 Votes (0%)

    Would you like to add support for COPA?

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

    If you voted no, what was the main reason?

    I voted yes!
    I don’t find the feature useful
    I don’t like the syntax
    I prefer a more comprehensive solution to this problem
    I prefer a narrower solution to this problem
    This breaks backwards compatibility
    This will have negative implications for future language evolution
    This will be a nightmare to implement and maintain
    I prefer not to say
    I voted yes!
    0 Votes (0%)
    I don’t find the feature useful
    25 Votes (71%)
    I don’t like the syntax
    3 Votes (9%)
    I prefer a more comprehensive solution to this problem
    6 Votes (17%)
    I prefer a narrower solution to this problem
    0 Votes (0%)
    This breaks backwards compatibility
    0 Votes (0%)
    This will have negative implications for future language evolution
    0 Votes (0%)
    This will be a nightmare to implement and maintain
    0 Votes (0%)
    I prefer not to say
    1 Votes (3%)

    If you did not like the proposed syntax, which alternative would you prefer?

    A (the proposed one)
    B
    C
    D
    E
    F
    Irrelevant
    A (the proposed one)
    0 Votes (0%)
    B
    1 Votes (3%)
    C
    0 Votes (0%)
    D
    0 Votes (0%)
    E
    0 Votes (0%)
    F
    0 Votes (0%)
    Irrelevant
    29 Votes (97%)

    Server-Side Request and Response Objects

    Author
    Paul M. Jones
    This RFC proposes an object-oriented approach around request and response functionality already existing in PHP, in order to reduce the global mutable state pro...

    Adopt Server-Side Request and Response Objects?

    Yes
    No
    Yes
    11 Votes (24%)
    No
    35 Votes (76%)

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

    Userspace operator overloading

    Author
    Jan Böhmer
    Target
    8.0
    At the moment expressions like $a + $b or $a * 2 are only valid if $a and $b are scalar types like int or float. However, in many other programming languages li...

    Add userspace operator overloading as described?

    Yes
    No
    Yes
    38 Votes (58%)
    No
    28 Votes (42%)

    declare(function_and_const_lookup='global')

    Author
    When calling a function or using a constant that isn't fully qualified from a namespace (other than the global namespace), PHP will check these two locations in...

    Support declare(function_and_const_lookup=...)

    Yes
    No
    Yes
    2 Votes (5%)
    No
    35 Votes (95%)

    Severity of redundant uses of global functions/constants

    Warning
    Fatal Error
    Allow and don't warn
    Warning
    4 Votes (19%)
    Fatal Error
    10 Votes (48%)
    Allow and don't warn
    7 Votes (33%)

    Deprecate Backtick Operator (V2)

    Author
    PHP contains multiple functions for executing system commands from within a PHP script as detailed in the Program execution functions section of the manual (htt...

    Deprecate backtick operator in PHP 8.0?

    Yes
    No
    Yes
    11 Votes (30%)
    No
    26 Votes (70%)

    Object Initializer

    Author
    PHP doesn't have a convenient literal syntax for creating an object and initializing properties. This makes creating objects and initializing their state quite ...

    Accept object initializer?

    Yes
    No
    Yes
    3 Votes (10%)
    No
    26 Votes (90%)

    Choose between two tokens as an assign operator in object initializer block?

    =
    =>
    =
    16 Votes (89%)
    =>
    2 Votes (11%)

    Deprecate short open tags, again

    Author
    Author
    Target
    7.4
    In addition to

    Deprecate and remove short open tags as proposed?

    Yes
    No
    Yes
    30 Votes (56%)
    No
    24 Votes (44%)

    Making stdClass iterable

    Author
    Craig Duncan
    By far the most common usage of stdClass is (as the manual defines) Created by typecasting to object, or from the result of a call to 'json_decode()' using the ...

    Making stdClass iterable

    Yes
    No
    Yes
    7 Votes (22%)
    No
    25 Votes (78%)

    User-defined object comparison

    Author
    This RFC builds on the motivation of previous discussions with a new proposal for the ability to override the default behaviour of object comparison that was in...

    Support user-defined object comparison?

    Yes
    No
    Yes
    5 Votes (29%)
    No
    12 Votes (71%)

    iterable_to_array() and iterable_count()

    Author
    Michael Moravec
    PHP 7.1 added an iterable pseudo-type which is a union of array and Traversable. Although iterable is very useful, sometimes it's necessary to convert it to an ...

    Add iterable_to_array()?

    Yes
    No
    Yes
    8 Votes (25%)
    No
    24 Votes (75%)

    Add iterable_count()?

    Yes
    No
    Yes
    2 Votes (5%)
    No
    35 Votes (95%)

    Class Friendship

    Author
    Dustin Wheeler
    Class Friendship allows a class to be better encapsulated by granting per-class access to protected members. Class Friendship is an explicit and concise express...

    Support Class Friendship?

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

    Implement missing SQLite feature "openBlob" in PDO

    Author
    bohwaz
    The SQLite driver of PDO is missing some features provided by the SQLite3 extension, namely openBlob which allows to access a stored blob as a stream/file point...

    Implement sqliteOpenBlob in PDO?

    Yes
    No
    Yes
    7 Votes (50%)
    No
    7 Votes (50%)

    Unary null coalescing operator

    Author
    Andrea Faulds
    PHP 7.0 introduced the Null Coalescing Operator (??), which provides a convenient, more concise alternative to isset() or an explicit NULL check when retrieving...

    Accept and merge unary null coalescing operator for PHP 7.2?

    Yes
    No
    Yes
    4 Votes (25%)
    No
    12 Votes (75%)

    Doxygen

    Author
    Richard Fussenegger
    Proposal to adopt the Doxygen documentation style for the C sources of PHP

    Document with Doxygen?

    Yes
    No
    Yes
    11 Votes (41%)
    No
    16 Votes (59%)

    UUID

    Author
    Richard Fussenegger
    Universally Unique Identifiers (UUIDs, also known as Globally Unique Identifiers [GUIDs]) are 128 bit integers that guarantee uniqueness across space and time. ...

    Add UUID value object to PHP standard module?

    Yes
    No
    Yes
    17 Votes (44%)
    No
    22 Votes (56%)

    Throwable error code's type generalization

    Author
    Wes (@WesNetmo on Twitter)
    Currently Exception::$code, Error::$code and Throwable::getCode() are said to be int only, but this is actually violated by PHP itself, specifically by the PDO ...

    Accept Throwables error code generalization?

    Yes
    No
    Yes
    13 Votes (54%)
    No
    11 Votes (46%)

    Binary String Deprecation

    Author
    Pedro Magalhães
    Author
    mail at pmmaga dot net
    In version 5.2.1, the b prefix and the (binary) cast were introduced for forward compatibility with the PHP-6 project. However, that project never came to be an...

    Binary String Deprecation

    Yes
    No
    Yes
    19 Votes (59%)
    No
    13 Votes (41%)

    User defined session serializer

    Author
    Yasuo Ohgaki
    Currently, only C module can add additional session data serializer. With user defined session data serializer, users can

    Add user defined session serializer

    Yes
    No
    Yes
    9 Votes (47%)
    No
    10 Votes (53%)

    Add validation functions to filter module

    Author
    Yasuo Ohgaki
    Input data validation is the most important security measure in software security.

    Add validation functions to filter module

    Yes
    No
    Yes
    1 Votes (7%)
    No
    14 Votes (93%)

    Target version

    7.1.0
    7.2.0
    7.1.0
    1 Votes (17%)
    7.2.0
    5 Votes (83%)

    Add str_starts_with(), str_ends_with() and related functions

    Author
    Will Hudgins
    PHP does not contain functions to test if a string begins or ends with a certain substring. This is currently possible using several other functions, but adding...

    Do you want str_starts_with, str_starts_with_ci, str_ends_with, and str_ends_with_ci functions in PHP 7.4?

    yes
    no
    yes
    27 Votes (57%)
    no
    20 Votes (43%)

    Do you want mb_str_starts_with, mb_str_starts_with_ci, mb_str_ends_with, and mb_str_ends_with_ci functions in PHP 7.4?

    yes
    no
    yes
    4 Votes (10%)
    no
    37 Votes (90%)

    New operator (short tag) for context-dependent escaping

    Author
    Michael Vostrikov
    This RFC proposes the addition of new operator for context-dependent escaping. This operator is intended mainly for HTML escaping but it allows to add handlers ...

    Add new operator (short tag) for context-dependent escaping to next PHP 7.x?

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

    Is default handler required, with a possibility to fully unregister it?

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

    Is it needed to wrap the functions into static class?

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

    Is the comma suitable as a separation sign?

    Yes
    No
    Yes
    10 Votes (77%)
    No
    3 Votes (23%)

    Enable session.use_strict_mode by default

    Author
    Yasuo Ohgaki
    Due to HTTP cookie implementation, it is easy to create unchangeable/undeletable cookies via JavaScript injections. Single JavaScript injection vulnerability or...

    Enable session.use_strict_mode by default

    Yes
    No
    Yes
    4 Votes (50%)
    No
    4 Votes (50%)

    var_info

    Author
    Richard Fussenegger
    Debug, error, and exception messages in PHP often contain type information about variables that did not satisfy a defined validation constraint. The idiomatic w...

    Accept var_info function?

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

    var_type

    Author
    Richard Fussenegger
    The idiomatic way to retrieve type information of a variable in PHP is via the gettype() function. This function suffers from upholding backwards compatibility ...

    Accept var_type function?

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

    Accept type constants?

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

    ReflectionType Improvements

    Author
    For PHP 7.0 the ReflectionType API was introduced in conjunction with return types. Its minimal API was intended to be the base for future improvements; this R...

    Accept ReflectionType Improvements RFC?

    Yes
    No
    Yes
    5 Votes (38%)
    No
    8 Votes (62%)

    Attributes

    Author
    Dmitry Stogov
    Attributes (or annotations) are a form of syntactic metadata that can be added to language classes, functions, etc. PHP offers only a single form of such metada...

    Accept PHP Attributes? (2/3+1 majority required)

    Yes
    No
    Yes
    14 Votes (39%)
    No
    22 Votes (61%)

    What may be used as attribute value? (simple majority wins)

    valid PHP expression (internally represented as AST)
    valid PHP constant (number or string)
    valid PHP expression (internally represented as AST)
    11 Votes (39%)
    valid PHP constant (number or string)
    17 Votes (61%)

    Functional Interfaces

    Author
    krakjoe
    A functional interface is an interface which declares only one abstract method, a familiar example is Countable:

    Accept functional interfaces? (2/3+1 majority required)

    Yes
    No
    Yes
    7 Votes (24%)
    No
    22 Votes (76%)

    Typed Properties

    Author
    Author
    Typed Properties allow for an optional keyword in the definition, after the visibility scope, which contains the type the property should allow.

    Merge typed properties ?

    Yes
    No
    Yes
    34 Votes (60%)
    No
    23 Votes (40%)

    "var" Deprecation

    Author
    This RFC proposes that var be deprecated in PHP 7.1 (in favor of public) and its functionality removed in PHP 8.0.

    Deprecate `var` in 7.1 and remove it from 8.0?

    Yes
    No
    Yes
    31 Votes (57%)
    No
    23 Votes (43%)

    Add PHP Engine Identifier Constant

    Author
    Due to the desire to maintain compatibility with PHP, alternative runtimes such as HHVM set the PHP_VERSION constant to something like 5.6.0-hhvm (utilizing the...

    Add PHP_ENGINE constant

    Yes
    No
    Yes
    8 Votes (47%)
    No
    9 Votes (53%)

    Add PHP_(*_)ENGINE(_ID) constants

    Yes
    No
    Yes
    3 Votes (18%)
    No
    14 Votes (82%)

    Number Format Separator

    Author
    Long numerical literals can be a source of poor readability in code. Take the following examples:

    Include a Digit Separator into PHP

    Yes
    No
    Yes
    20 Votes (53%)
    No
    18 Votes (47%)

    Callable Prototypes

    Author
    Nikita Nefedov
    Author
    Márcio Almada
    This RFC proposes an evolution of the callable type, scoped to argument lists. This should allow more detailed declarations of callable type declarations - incl...

    Accept callable prototypes?

    Yes
    No
    Yes
    18 Votes (49%)
    No
    19 Votes (51%)

    JSON numeric as string

    Author
    Author
    JSON is a data format that is often used for data exchange between different platforms. These platforms can have different number representation which might lea...

    Include JSON_FLOAT_TO_STRING for decoding?

    Yes
    No
    Yes
    1 Votes (17%)
    No
    5 Votes (83%)

    Include JSON_FLOAT_TO_STRING for encoding?

    Yes
    No
    Yes
    1 Votes (17%)
    No
    5 Votes (83%)

    Include JSON_INT_TO_STRING for decoding?

    Yes
    No
    Yes
    1 Votes (17%)
    No
    5 Votes (83%)

    Include JSON_INT_TO_STRING for encoding?

    Yes
    No
    Yes
    1 Votes (20%)
    No
    4 Votes (80%)

    PHP version used for the included constant

    PHP 5.6
    PHP 7.0
    PHP 7.1
    PHP 5.6
    1 Votes (17%)
    PHP 7.0
    0 Votes (0%)
    PHP 7.1
    5 Votes (83%)

    In Operator

    Author
    Niklas Keller
    Author
    Bob Weinand
    This RFC adds a new in operator which simplifies contains checks for strings and arrays. The in operator makes these checks way more readable and lowers the cog...

    Introduce the in operator?

    Yes
    No
    Yes
    21 Votes (45%)
    No
    26 Votes (55%)

    Allow error_handler callback parameters to be passed by reference

    Author
    Author
    Thomas Bley
    In userland it is sometimes necessary to extend PHP's notices/warnings with additional information (e.g. username from session, request-uri, http-host, stack tr...

    Allow error_handler callback parameters to be passed by reference

    Allow $errstr parameter to be passed by reference
    Allow $errno, $errstr, $errfile, $fileno parameter to be passed by reference
    No, Allow none of the parameter be a reference parameter
    Allow $errstr parameter to be passed by reference
    3 Votes (15%)
    Allow $errno, $errstr, $errfile, $fileno parameter to be passed by reference
    1 Votes (5%)
    No, Allow none of the parameter be a reference parameter
    16 Votes (80%)

    coercive_sth

    Yes
    No
    Yes
    27 Votes (38%)
    No
    44 Votes (62%)

    Make empty() a Variadic

    Author
    Thomas Punt
    This RFC aims make empty() have a variable arity.

    Make empty() a Variadic

    Yes
    No
    Yes
    26 Votes (50%)
    No
    26 Votes (50%)

    Union Types

    Author
    Author
    Bob Weinand
    PHP has type declarations which can be associated with function parameters or return values. These declarations perform two useful roles:

    Merge union types

    Yes
    No
    Yes
    11 Votes (38%)
    No
    18 Votes (62%)

    Replace ?QuestionMarkNullables by union | null

    Yes
    No
    Yes
    5 Votes (19%)
    No
    21 Votes (81%)

    Include true/false types

    Yes
    No
    Yes
    5 Votes (18%)
    No
    23 Votes (82%)

    Skipping optional parameters for functions

    Author
    In PHP, it is very common for function is to have many optional arguments, like this:

    Should PHP 7 support parameter skipping as described in this RFC?

    Yes
    No
    Yes
    17 Votes (39%)
    No
    27 Votes (61%)

    PHP 5.7

    Author
    Andrea Faulds
    There is going to be a new major release of PHP, PHP 7, and we have agreed on a timeline for it. Because it is a major release that breaks backwards-compatibili...

    Accept the PHP 5.7 RFC?

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

    Static classes

    Please understand only one of the following proposals can be accepted, not both. They're explained together because the address the same issue.

    Static classes

    Yes, as "static class"
    Yes, as "abstract final class"
    No
    Yes, as "static class"
    5 Votes (29%)
    Yes, as "abstract final class"
    0 Votes (0%)
    No
    12 Votes (71%)

    Default constructors

    Author
    This RFC proposes to introduce the concept of default constructors into PHP. The meaning of it is that whatever is the parent class, child class can always call...

    Should PHP 7 have default constructor semantics as described in this proposal?

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

    Objects as hash keys

    Author
    Author
    krakjoe
    In PHP array keys can be only represented as numbers and strings. However, there already are several classes that represent different kinds of numbers (such as ...

    Should we support using objects as keys as described in this proposal?

    Yes, via method __hash
    Yes, via method __toKey
    No
    Yes, via method __hash
    6 Votes (20%)
    Yes, via method __toKey
    0 Votes (0%)
    No
    24 Votes (80%)

    Safe Casting Functions

    Author
    Andrea Faulds
    Currently, PHP only provides one means of type conversion: explicit casts. These casts never fail or emit errors, making them dangerous to use, as when passed g...

    Should the Safe Casting Functions RFC be accepted, and the patch merged into master?

    Yes
    No
    Yes
    5 Votes (24%)
    No
    16 Votes (76%)

    Access to aliases definition by reflection

    Author
    Miloslav Hůla
    PHP 5.3 brought namespaces and aliasing/importing by use operator. Aliases are expanded to FQN (Fully Qualified Name) in the compile-time phase and user-land co...

    Access to aliases definition by reflection

    Yes
    No
    Yes
    1 Votes (9%)
    No
    10 Votes (91%)

    loop + or control structure

    Author
    leigh@php.net
    It is often desirable to perform a set of actions if the conditions to enter a loop are not met. This can require a significant amount of boilerplate code if th...

    Loop + or control structure in PHP 7

    Yes
    No
    Yes
    4 Votes (27%)
    No
    11 Votes (73%)

    Add pecl_http to the core?

    Yes, enabled by default
    Yes, disabled by default
    No
    Yes, enabled by default
    3 Votes (9%)
    Yes, disabled by default
    6 Votes (19%)
    No
    23 Votes (72%)

    Namespace prefix for pecl_http

    http
    php\http
    http
    8 Votes (57%)
    php\http
    6 Votes (43%)

    Bare Name Array Literal

    Author
    Andrea Faulds
    At present, arrays are a tad cumbersome to define. String keys must be quoted and followed by a double arrow, then the element ends with a comma:

    Merge bare name array literal into master/PHP 5.7?

    Yes
    No
    Yes
    3 Votes (18%)
    No
    14 Votes (82%)

    Bare Name Array Dereference

    Author
    Andrea Faulds
    The current array dereferencing syntax for string keys is somewhat cumbersome:

    Merge array dereference into master/PHP 5.7?

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

    Improve HTML escape

    Author
    Yasuo Ohgaki
    HTML escape can be improved by escaping all dangerous chars. HTML escape can be improved by escaping , , ', & and /.

    Add / escape and Make ENT_QUOTES default

    Yes
    No
    Yes
    4 Votes (29%)
    No
    10 Votes (71%)

    Alternative implementation of mbstring using ICU

    Author
    Yasuo Ohgaki
    This RFC discusses the alternative implementation of mbstring extension that in turn uses ICU instead of libmbfl.

    Include mbstring-ng for PHP-5.6 as EXPERIMENTAL module

    Yes
    No
    Yes
    1 Votes (9%)
    No
    10 Votes (91%)

    Multibyte Char Handling

    Author
    Yasuo Ohgaki
    For example, addslashes()/stripslashes() has vulnerability that allows PHP script execution and DoS under certain environment via char encoding based attack. Co...

    Add required mb_*() functions to fix vulnerability

    Yes
    No
    Yes
    2 Votes (17%)
    No
    10 Votes (83%)

    Array Of

    Author
    This RFC proposes a syntax to add to improve type-hinting, allowing an array of that hinted type to be passed as an argument, thus improving readability of code...

    Array Of Type Hinting

    Yes
    No
    Yes
    4 Votes (20%)
    No
    16 Votes (80%)

    Alphanumeric Decrement

    Author
    Andrea Faulds
    This will add support for decrementing alphanumeric strings (ab, for example) to complement the existing incrementing behaviour.

    Alphanumeric Decrement

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

    64 bit platform improvements for string length and integer in zval

    Author
    ab
    Author
    Author
    Current PHP zval datatype implementation uses long datatype to handle signed integer and int datatype to handle string length. The most 64 bit capable platforms...

    Merge this RFC into PHP-5.6 having regard to Vote 2 and 3

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

    Keep the old macro names for LONG vs. INT, STRLEN vs. STRSIZE, etc.

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

    Keep zpp specs l, L, s, p as aliases to i, I, S, P

    Yes
    No
    Yes
    15 Votes (47%)
    No
    17 Votes (53%)

    Exceptions in the engine

    Author
    This RFC proposes to allow the use of exceptions in the engine and to allow the replacement of existing fatal or recoverable fatal errors with exceptions.

    Implement in PHP 5.6?

    Yes
    Yes, without E_RECOVERABLE_ERROR changes
    No
    Yes
    24 Votes (52%)
    Yes, without E_RECOVERABLE_ERROR changes
    1 Votes (2%)
    No
    21 Votes (46%)

    Automatic Property Initialization

    Author
    When writing constructors, most constructor bodies usually just assign passed arguments to some properties. While technically not a problem, it is somewhat tedi...

    Automatic Property Initialization

    Yes
    No
    Yes
    7 Votes (39%)
    No
    11 Votes (61%)

    Extended keyword support

    Author
    Bob Weinand
    This RFC aims to remove some restrictions which are due to the fact that keywords are not included in T_STRING (especially for class const, method and class nam...

    Should the extended keyword support patch be merged into master?

    Yes
    No
    Yes
    5 Votes (31%)
    No
    11 Votes (69%)

    instance counter

    Author
    Frank Liepert
    Coming to Object-Orientated Programming, PHP offers a variety of possibilities to obtain information about classes and their instances (objects). In this regard...

    Should this RFC be implemented?

    Yes
    No
    Yes
    1 Votes (7%)
    No
    14 Votes (93%)

    Trailing comma function args

    Author
    PHP has long supported trailing commas in array declarations like so:

    Should the current optional trailing comma implementation be merged

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

    Alternative typehinting syntax for accessors

    Author
    This RFC proposes a different typehinting syntax for the property accessors proposal. The proposed syntax places the typehint before the property name rather th...

    Should the proposed typehinting syntax be used instead of the current one?

    Yes
    No
    Yes
    3 Votes (20%)
    No
    12 Votes (80%)

    array_part

    Author
    This RFC proposes a new array function that can extract multidimensional slices for arrays.

    Should the current array_part() implementation be merged

    Yes
    No
    Yes
    2 Votes (11%)
    No
    17 Votes (89%)

    Class Metadata

    Author
    Guilherme Blanco
    Author
    Many languages currently support metadata information. This RFC exposes an idea about how can it be implemented in PHP, providing a powerful tool that many appl...

    SplClassLoader

    Author
    Guilherme Blanco
    PHP 5 introduced the concept of autoloading classes.

    getEntropy feature request

    Author
    This isn't done yet, don't read it yet. please?

    ifsetor()

    Author
    Lukas Smith
    Frequently PHP developers need to initialize some variable that is passed in via the outside to some value. This leads to repeated code, that is needlessly pron...

    Is_Literal

    Author
    Craig Francis
    Author
    craig#at#craigfrancis.co.uk
    Add the function is_literal(), a lightweight and effective way to identify if a string was written by a developer, removing the risk of a variable containing an...

    is_literal

    Yes
    No
    Yes
    10 Votes (30%)
    No
    23 Votes (70%)

    Introduce script only include/require

    Author
    Yasuo Ohgaki
    include()/require() is source of file/script inclusion for a long time. Script inclusion is extremely severe security breach and PHP is too weak against script ...

    Introduce script inclusion protection?

    Yes
    No
    Yes
    4 Votes (14%)
    No
    24 Votes (86%)

    Precise Session Management

    Author
    This proposal fixes session management design issue. Session ID management requires more precise management. Otherwise,

    Precise Session Data Management

    Yes
    No
    Yes
    15 Votes (58%)
    No
    11 Votes (42%)

    Accept PHP Accessors for 5.5?

    Yes
    No
    Yes
    34 Votes (61%)
    No
    22 Votes (39%)

    Improve hash_hkdf() parameter order and handling

    Author
    Yasuo Ohgaki
    Even cryptographic hashes have secret information disclosure/analysis risks with string concatenations. For example, following code is weak (could be more vuln...

    Fix hash_hkdf() signature and behavior

    Yes
    No
    Yes
    1 Votes (7%)
    No
    14 Votes (93%)