Home » Community » People » nikic »
nikic

nikic

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.

Namespaces in bundled PHP extensions

Author
Target
policy
Classes and functions provided by bundled PHP extensions are currently all located in the global namespace (with one exception). There is a strong sentiment tha...

Allow use of namespaces in line with these guidelines?

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

Migrating to GitHub Issues

Author
Target
policy
This RFC proposes to use GitHub Issues on the PHP repository in place of our own bugs.php.net bug tracker.

Migrate from bugs.php.net to GitHub issues as proposed?

Yes
No
Yes
41 Votes (91%)
No
4 Votes (9%)

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

Deprecate partially supported callables

Author
Target
8.2
This RFC proposes to deprecate callables that are supported by call_user_func($callable), but not by $callable().

Deprecate partially supported callables?

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

Deprecate dynamic properties

Author
Target
8.2
When writing to a property that has not been declared, PHP will silently create a dynamic property instead. In modern code, this is rarely done intentionally. T...

Deprecate dynamic property creation with #[AllowDynamicProperties] opt-in?

Yes
No
Yes
52 Votes (68%)
No
25 Votes (32%)

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

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

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

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

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

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

First-class callable syntax

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

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

Reclassifying engine warnings

Author
Target
8.0
While newly introduced error conditions in the engine typically use Error exceptions, we have many old error conditions that use inappropriate severity levels f...

Change undefined variable severity to?

Error exception
Warning
Keep Notice
Error exception
36 Votes (56%)
Warning
18 Votes (28%)
Keep Notice
10 Votes (16%)

Change undefined array index severity to?

Warning
Keep Notice
Warning
42 Votes (67%)
Keep Notice
21 Votes (33%)

Change division by zero severity to?

DivisionByZeroError exception
Keep Warning
DivisionByZeroError exception
52 Votes (87%)
Keep Warning
8 Votes (13%)

Accept remaining classifications shown in the table above?

Yes
No
Yes
54 Votes (95%)
No
3 Votes (5%)

Named Arguments

Author
Target
8.0
Named arguments allow passing arguments to a function based on the parameter name, rather than the parameter position. This makes the meaning of the argument se...

Add named argument support?

Yes
No
Yes
57 Votes (76%)
No
18 Votes (24%)

Treat namespaced names as single token

Author
Target
8.0
PHP currently treats namespaced names like Foo\Bar as a sequence of identifiers and namespace separator tokens. This RFC proposes to treat namespaced names as a...

Treat namespaced names as a single token?

Yes
No
Yes
38 Votes (90%)
No
4 Votes (10%)

Saner string to number comparisons

Author
Target
8.0
Comparisons between strings and numbers using == and other non-strict comparison operators currently work by casting the string to a number, and subsequently pe...

Change string to number comparison semantics as proposed?

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

Make sorting stable

Author
Target
8.0
Sorting functions in PHP are currently unstable, which means that the order of equal elements is not guaranteed. This RFC proposes to make all sorts in PHP stab...

Make sorting in PHP stable?

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

Constructor Property Promotion

Author
Target
8.0
Currently, the definition of simple value objects requires a lot of boilerplate, because all properties need to be repeated at least four times. Consider the fo...

Add support for declaring properties in the constructor signature?

Yes
No
Yes
46 Votes (82%)
No
10 Votes (18%)

Stricter type checks for arithmetic/bitwise operators

Author
Target
8.0
This RFC proposes to throw a TypeError when an arithmetic or bitwise operator is applied to an array, resource or (non-overloaded) object. The behavior of scala...

Add stricter type checks for arithmetic/bitwise operators?

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

Allow trailing comma in parameter list

Author
Target
8.0
This RFC proposes to allow an optional trailing comma in parameter lists. This is already supported for argument lists.

Allow trailing comma in parameter lists?

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

Object-based token_get_all() alternative

Author
Target
8.0
The token_get_all() function currently returns tokens either as a single-character string, or an array with a token ID, token text and line number. This RFC pro...

Add object-based token_get_all() alternative?

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

Validation for abstract trait methods

Author
Target
8.0
Traits can contain abstract methods, which are used to specify requirements the trait has on the using class. However, the signatures of these methods are curre...

Validate abstract trait methods?

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

Allow ::class on objects

Author
Target
8.0
The Foo\Bar::class syntax has been introduced in PHP 5.5 to allow fetching a class name as a string, in a way that respects context-dependent name resolution ru...

Allow ::class on objects?

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

Static return type

Author
Target
8.0
The static special class name in PHP refers to the class a method was actually called on, even if the method is inherited. This is known as late static binding ...

Add static return type?

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

Variable Syntax Tweaks

Author
Target
8.0
The Uniform Variable Syntax RFC resolved a number of inconsistencies in PHP's variable syntax. This RFC intends to address a small handful of cases that were ov...

Implement syntax changes outlined above in PHP 8?

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

Union Types 2.0

Author
Target
8.0
A union type accepts values of multiple different types, rather than a single one. PHP already supports two special union types:

Add union types as proposed?

Yes
No
Yes
61 Votes (92%)
No
5 Votes (8%)

Always generate fatal error for incompatible method signatures

Author
Target
8.0
Inheritance errors due to incompatible method signatures (LSP violations) currently either throw a fatal error or a warning depending on the cause of the error ...

Always generate fatal error for incompatible method signatures in PHP 8?

Yes
No
Yes
39 Votes (93%)
No
3 Votes (7%)

Consistent type errors for internal functions

Author
Target
8.0
For user-defined functions, passing a parameter of illegal type results in a TypeError. For internal functions, the behavior depends on multiple factors, but th...

Make zpp failures always throw TypeError?

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

Weak maps

Author
Target
8.0
Weak maps allow creating a map from objects to arbitrary values (similar to SplObjectStorage) without preventing the objects that are used as keys from being ga...

Add WeakMap class in PHP 8.0?

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

Deprecations for PHP 7.4

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

Deprecate (real) cast and is_real() function?

Yes
No
Yes
35 Votes (83%)
No
7 Votes (17%)

Deprecate get_magic_quotes_gpc() and get_magic_quotes_runtime()?

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

Deprecate array_key_exists() with objects?

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

Deprecate FILTER_SANITIZE_MAGIC_QUOTES?

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

Deprecate Reflection export() methods?

Yes
No
Yes
37 Votes (90%)
No
4 Votes (10%)

Deprecate mb_strrpos() with encoding as 3rd argument?

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

Deprecate implode() with inverted parameter order?

Yes
No
Yes
38 Votes (88%)
No
5 Votes (12%)

Deprecate unbinding of $this from non-static closures?

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

Deprecate hebrevc() function?

Yes
No
Yes
34 Votes (83%)
No
7 Votes (17%)

Deprecate convert_cyr_string() function?

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

Deprecate money_format() function?

Yes
No
Yes
34 Votes (81%)
No
8 Votes (19%)

Deprecate ezmlm_hash() function?

Yes
No
Yes
37 Votes (90%)
No
4 Votes (10%)

Deprecate restore_include_path() function?

Yes
No
Yes
31 Votes (78%)
No
9 Votes (23%)

Deprecate allow_url_include ini option?

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

Allow throwing exceptions from __toString()

Author
Target
7.4
Throwing exceptions from __toString() is currently forbidden and will result in a fatal error. This makes it dangerous to call arbitrary code inside __toString(...

Allow exceptions from __toString() in PHP 7.4?

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

Deprecate left-associative ternary operator

Author
Target
7.4
Unlike most (all?) other languages, the ternary operator in PHP is left-associative rather than right-associative. The left-associative behavior is generally no...

Deprecate and remove left-associative ternary without explicit parentheses?

Yes
No
Yes
35 Votes (78%)
No
10 Votes (22%)

Typed Properties 2.0

Author
Target
7.4
With the introduction of scalar types and return types, PHP 7 greatly increased the power of PHP's type system. However, it is currently not possible to declare...

Add support for typed properties as described in this RFC?

Yes
No
Yes
70 Votes (99%)
No
1 Votes (1%)

Reflection for references

Author
Target
7.4
Specialized libraries that perform operations like dumping, cloning or comparison over arbitrary value graphs require the ability to reason about PHP references...

Add ReflectionReference?

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

New custom object serialization mechanism

Author
Target
7.4
PHP currently provides two mechanisms for custom serialization of objects: The __sleep()/__wakeup() magic methods, as well as the Serializable interface. Unfort...

Include proposed serialization mechanism in PHP 7.4?

Yes
No
Yes
20 Votes (74%)
No
7 Votes (26%)

Deprecate and Remove Case-Insensitive Constants

Author
Target
7.3
PHP currently supports both case-sensitive and case-insensitive constants. Case-insensitive constants see very little practical use, are subject to various inco...

Deprecate (and later remove) case-insensitive constants?

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

Deprecations for PHP 7.3

Author
Target
7.3
This is a draft RFC for multiple deprecations targeting PHP 7.3. The RFC proposes to deprecate the listed functionality in PHP 7.3 and remove it in PHP 8.

Deprecate (and subsequently remove) undocumented mbstring function aliases?

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

Deprecate (and subsequently remove) integer needles in string search functions?

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

Deprecate (and subsequently remove) fgetss() (and variations) and the string.strip_tags filter?

Yes
No
Yes
20 Votes (83%)
No
4 Votes (17%)

Deprecate (and subsequently remove) support for defining a free-standing assert() function?

Yes
No
Yes
20 Votes (74%)
No
7 Votes (26%)

Deprecate (and subsequently remove) FILTER_FLAG_(SCHEME|HOST)_REQUIRED flags?

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

Deprecate (and subsequently remove) pdo_odbc.db2_instance_name php.ini directive?

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

Deprecations for PHP 7.2

Author
Target
7.2
This is a draft RFC for multiple deprecations targeting PHP 7.2. The RFC proposes to deprecate the listed functionality in PHP 7.2 and remove it no later than i...

Deprecate and subsequently remove __autoload

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

Deprecate and subsequently remove $php_errormsg

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

Deprecate and subsequently remove create_function()

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

Deprecate and subsequently remove mbstring.func_overload

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

Deprecate and subsequently remove (unset) cast

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

Deprecate and subsequently remove parse_str() without second argument

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

Deprecate and subsequently remove gmp_random()

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

Deprecate and subsequently remove each()

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

Deprecate and subsequently remove assert() with string argument

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

Deprecate and subsequently remove $errcontext argument of error handler

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

Forbid dynamic calls to scope introspection functions

Author
Target
7.1
Dynamic calls to functions like extract(), which either inspect or modify the parent scope or stack frame, have unclear behavior (with disagreements between PHP...

Forbid dynamic calls to scope introspection functions?

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

Reclassify E_STRICT notices

Author
Target
7.0
This RFC proposes to reclassify the few existing E_STRICT notices and remove this error category.

Reclassify E_STRICT notices as described in this RFC?

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

Remove deprecated functionality in PHP 7

Author
Target
7.0
This RFC proposes to remove functionality which has been deprecated during the 5.x cycle.

Unbundle the ext/ereg extension?

Yes
No
Yes
37 Votes (93%)
No
3 Votes (8%)

Unbundle the ext/mysql extension?

Yes
No
Yes
28 Votes (70%)
No
12 Votes (30%)

Remove assignment of new by reference?

Yes
No
Yes
31 Votes (84%)
No
6 Votes (16%)

Remove support for calls from incompatible context?

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

Remove dl() in fpm-fcgi SAPI?

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

Remove (set_)magic_quotes_runtime() functions?

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

Remove listed deprecated functions?

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

Remove xsl.security_prefs ini directive?

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

Remove extension specific encoding ini directives?

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

Remove $is_dst parameter of the mktime() and gmmktime() functions?

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

Remove support for #-style comments in ini files?

Yes
No
Yes
27 Votes (87%)
No
4 Votes (13%)

Disallow string category names in setlocale()?

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

Disallow enabling unsafe curl uploads?

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

Remove preg_replace() eval modifier?

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

Remove PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT driver option?

Yes
No
Yes
20 Votes (80%)
No
5 Votes (20%)

Remove CN_match and SNI_server_name stream context options?

Yes
No
Yes
20 Votes (80%)
No
5 Votes (20%)

Abstract syntax tree

Author
This RFC proposes the introduction of an Abstract Syntax Tree (AST) as an intermediary structure in our compilation process. This replaces the existing practice...

Use AST implementation in PHP 7?

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

Uniform Variable Syntax

Author
Target
7.0
This RFC proposes the introduction of an internally consistent and complete variable syntax. To achieve this goal the semantics of some rarely used variable-var...

Implement Uniform Variable Syntax in PHP 6?

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

Remove alternative PHP tags in PHP 7?

Yes
No
Yes
26 Votes (76%)
No
8 Votes (24%)

Remove hex support in numeric strings

Author
Target
7.0
This RFC proposes to remove support for hexadecimal numers in is_numeric_string. Support for hex in this function is inconsistent with behavior in other places ...

Remove hex support in numeric strings?

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

Exceptions in the engine (for PHP 7)

Author
Target
7.0
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.

Allow exceptions in the engine and conversion of existing fatals?

Yes
No
Yes
60 Votes (97%)
No
2 Votes (3%)

Introduce and use BaseException?

Yes
No
Yes
39 Votes (67%)
No
19 Votes (33%)

Should the proposed variadic-function syntax be added in PHP 5.6 (master)?

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

Argument Unpacking

Author
Target
5.6
This RFC complements the variadics RFC. It introduces a syntax for unpacking arrays and Traversables into argument lists (also known as splat operator, scatter ...

Implement argument unpacking in PHP 5.6?

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

Internal operator overloading and GMP improvements

Author
Target
5.6
PHP offers facilities for large number and decimal arithmetic (GMP and BCMath), but currently using those is a PITA. This RFC proposes to improve the situation ...

Should these changes be applied for PHP 5.6?

Internal operator overloading
GMP changes
None
Internal operator overloading
14 Votes (45%)
GMP changes
15 Votes (48%)
None
2 Votes (6%)

Generators

Author
Target
5.5
Generators provide an easy, boilerplate-free way of implementing iterators.

Should generators be merged into master?

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

Which of the language constructs should accept arbitrary arguments?

Both empty() and isset()
Only empty()
None
Both empty() and isset()
3 Votes (14%)
Only empty()
14 Votes (67%)
None
4 Votes (19%)

Should empty() and isset() accept arbitrary arguments?

yes
no
yes
12 Votes (86%)
no
2 Votes (14%)

Remove type-restrictions on foreach keys?

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

Deprecate short open tags, again

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

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

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

Unwrap reference after foreach

Author
Target
8.2
After a foreach by reference loop, the value variable currently remains a reference to the last array element, which may result in unexpected behavior if the va...

Deprecate ticks

Author
Target
8.1
Ticks allow running a function for every N low-level tickable statements. Historically, they have been used for handling pcntl signals. However, they have outli...

Deprecate and remove continue targeting switch

Author
In PHP, if continue is applied to a switch statement, it behaves the same as break. In other languages, it would continue the surrounding loop instead. To avoid...

Namespace-scoped declares

Author
PHP 7 introduced the strict_types declare directive, which controls how scalar type declarations behave in a certain file. A common complaint is that this direc...

Parser Extension API

Author
This RFC proposes an introduction of userland parser extensions API for providing an access to the low-level Abstract Syntax Tree (AST) parser.

Allow explicit call-site pass-by-reference annotation

Author
By-reference parameters are currently only declared when defining a function, while the call-site does not distinguish between by-value and by-reference passing...

Moving to an AST-based parsing/compilation process (obsolete)

Author
Note: This RFC has been superseded by another Abstract Syntax Tree RFC.

Property Accessors

Author
Property accessors allow implementing custom behavior for reading or writing a property. PHP already provides this general functionality through __get() and __s...