Edit me on GitHub

PHP Features by version

Source
Version Active Support Ends Security Support Ends
8.2
8.3
8.4

Currently supported PHP versions

Name Links 8.28.38.4
Add attribute #[SensitiveParameter] RFC Y Y Y
Deprecate dynamic properties; add #[AllowDynamicProperties] attribute RFC Y Y Y
enum reads in const expressions RFC Y Y Y
standalone true type RFC Y Y Y
standalone null and false types RFC Y Y Y
Disjunctive Normal Form types - (A&B)|C RFC Y Y Y
constants in traits RFC Y Y Y
readonly classes RFC Y Y Y
Add #[Override] attribute RFC Y Y
Arbitrary static variable initializers RFC Y Y
Make unserialize() emit a warning for trailing data RFC Y Y
Dynamic class constant fetch RFC Y Y
Improve unserialize() error handling RFC Y Y
Updating readonly properties during clone RFC Y Y
Typed class cosntants RFC Y Y
Deprecate remains of string evaluated code assertions RFC Y Y
Add mb_str_pad function RFC Y Y
Warn on invalid operations with array_sum and array_product RFC Y Y
Warn or error for undefined range() usage RFC Y Y
Additions to Random\Randomizer; add Random\IntervalBoundary RFC Y Y
DateException and DateError RFC Y Y
Add json_validate function RFC Y Y
Use exceptions by default in SQLite3 extension RFC Y Y
Make GMP final RFC Y
More ext-dom features RFC Y
Stream opening functions for XML classes RFC Y
PDO driver-specific parsers RFC Y
Add array_find function RFC Y
Deprecate 0 ** -x RFC Y
Unbundle imap, pspell, and oci8 extensions RFC Y
Add StreamBucket class RFC Y
Opt-in DOM spec compliance RFC Y
Improve callbacks in ext-dom and ext-xsl RFC Y
Native PDO driver-specific subclasses RFC Y
New constants for round modes RFC Y
Add mb_trim, mb_ltrim, and mb_rtrim functions RFC Y
Raise BCrypt default cost from 10 to 12 RFC Y
Add XML_OPTION_PARSE_HUGE RFC Y
New JIT internals RFC Y
HTML5 DOM parsing and serialization RFC Y
Change JIT default INI values RFC Y
Add request_parse_body function (RFC1867 for non-POST verbs) RFC Y
Add http_get_last_response_headers and http_clear_last_response_headers functions RFC Y
Add mb_ucfirst and mb_lcfirst functions RFC Y
Add grapheme_str_split function (improve handling of strings with emojis) RFC Y
Add bcround, bcfloor, bcceil to BC Math RFC Y
Deprecate implicitly nullable parameters RFC Y
Support new MyClass()->method() without extra parentheses RFC Y
Add #[Deprecated] attribute and behavior RFC Y
Add property hooks RFC Y
Change rounding mode to enum RFC Y
Asymmetric visibility (public private(set) string $foo = 'bar';) RFC Y
Lazy object instantiation RFC Y
Turn exit into a function RFC Y

Next release (8.5)

Name Links

Previously-introduced

Name Links Introduced
scalar types, strict_types=1 RFC, Docs 7.0
Native return types RFC 7.0
?? null coalesce operator RFC 7.0
Spaceship operator (<=>) RFC 7.0
constants containing arrays 7.0
anonymous classes RFC 7.0
Unicode string literals \u{0000aa} RFC 7.0
Group use imports RFC 7.0
Throwable type RFC 7.0
RNG functions random_bytes and random_int RFC 7.0
?nullable type RFC 7.1
void return type RFC 7.1
iterable RFC 7.1
Square bracket array destructuring - [$a, $b] = $array RFC 7.1
class constant visiblity RFC 7.1
Multiple catch types in one block - catch (A|B $e) RFC 7.1
keys in list() destructuring RFC 7.1
negative string offsets RFC 7.1
Async handling pcntl_async_signals function RFC 7.1
Native object typehint RFC 7.2
override abstract method in extension RFC 7.2
sodium in core RFC 7.2
argon2i pw hash RFC 7.2
LSP-compatible parameter type widening RFC 7.2
grouped namespace trailing comma RFC 7.2
Flexible Heredoc+Nowdoc RFC 7.3
References in array destructiring RFC 7.3
Function call trailing commas RFC 7.3
generally improved mbstring 7.3
JSON constant JSON_THROW_ON_ERROR RFC 7.3
is_countable function RFC 7.3
typed class properties RFC 7.4
Arrow functions (fn () => returnValue) RFC 7.4
improved covariance/contravariance RFC 7.4
Null coalesce equals operator - ??= RFC 7.4
Unpacking inside arrays RFC 7.4
Numeric literal separator - 1_000 RFC 7.4
Added WeakReference class RFC 7.4
FFI RFC 7.4
Opcache preload RFC 7.4
named arguments RFC 8.0
attributes - #[AttributeClass] RFC 8.0
constructor property promotion RFC 8.0
Union types - Union|Type RFC 8.0
match expression RFC 8.0
Nullsafe property access - ?-> RFC 8.0
WeakMap class RFC 8.0
wider application of variadic parameters 8.0
static return type RFC 8.0
get_class on object shorthand - $someObject::class RFC 8.0
Stringable interface RFC 8.0
abstract private mtehods in traits RFC 8.0
throw as expression RFC 8.0
paramter list trailing comma RFC 8.0
Non-capturing catches - catch (Type) RFC 8.0
Native mixed type RFC 8.0
removal of invalid enforcement of private method variance rules RFC 8.0
String functions str_starts_with and str_ends_with RFC 8.0
str_contains RFC 8.0
JIT RFC 8.0
get_debug_type function RFC 8.0
LSP enhancements RFC 8.0
closure use trailing comma RFC 8.0
JSON always available RFC 8.0
Octal literal prefix - 0o14 RFC 8.1
array unpack with string keys RFC 8.1
named arg in fn call unpack 8.1
enumerations RFC 8.1
fibers RFC 8.1
first-class callables - $s = strlen(...) instead of $s = fn ($str) => strlen($str) RFC 8.1
Intersection types A & B & C RFC 8.1
Native never return type RFC 8.1
new in initializers - __construct(?Foo $foo = new Foo()) RFC 8.1
readonly properties RFC 8.1
Class constants can be final RFC 8.1
array_is_list function RFC 8.1
$GLOBALS restrictions RFC 8.1
Internal method return types RFC 8.1