| Version | Active Support Ends | Security Support Ends | 
|---|---|---|
| 8.2 | ||
| 8.3 | ||
| 8.4 | 
| Name | Links | 8.2 | 8.3 | 8.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 truetype | RFC | Y | Y | Y | 
| standalone nullandfalsetypes | RFC | Y | Y | Y | 
| Disjunctive Normal Form types - (A&B)|C | RFC | Y | Y | Y | 
| constants in traits | RFC | Y | Y | Y | 
| readonlyclasses | 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_padfunction | RFC | Y | Y | |
| Warn on invalid operations with array_sumandarray_product | RFC | Y | Y | |
| Warn or error for undefined range()usage | RFC | Y | Y | |
| Additions to Random\Randomizer; addRandom\IntervalBoundary | RFC | Y | Y | |
| DateExceptionandDateError | RFC | Y | Y | |
| Add json_validatefunction | RFC | Y | Y | |
| Use exceptions by default in SQLite3 extension | RFC | Y | Y | |
| Make GMPfinal | RFC | Y | ||
| More ext-domfeatures | RFC | Y | ||
| Stream opening functions for XML classes | RFC | Y | ||
| PDO driver-specific parsers | RFC | Y | ||
| Add array_findfunction | RFC | Y | ||
| Deprecate 0 ** -x | RFC | Y | ||
| Unbundle imap,pspell, andoci8extensions | RFC | Y | ||
| Add StreamBucketclass | RFC | Y | ||
| Opt-in DOM spec compliance | RFC | Y | ||
| Improve callbacks in ext-domandext-xsl | RFC | Y | ||
| Native PDOdriver-specific subclasses | RFC | Y | ||
| New constants for roundmodes | RFC | Y | ||
| Add mb_trim,mb_ltrim, andmb_rtrimfunctions | 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_bodyfunction (RFC1867 for non-POST verbs) | RFC | Y | ||
| Add http_get_last_response_headersandhttp_clear_last_response_headersfunctions | RFC | Y | ||
| Add mb_ucfirstandmb_lcfirstfunctions | RFC | Y | ||
| Add grapheme_str_splitfunction (improve handling of strings with emojis) | RFC | Y | ||
| Add bcround,bcfloor,bcceilto 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 exitinto a function | RFC | Y | 
| Name | Links | 
|---|---|
| Deprecations for PHP 8.5 | RFC | 
| Add locale for case insensitive grapheme functions | RFC | 
| Allow #[Deprecated]on traits | RFC | 
| Add FILTER_THROW_ON_FAILURE | RFC | 
| Add #[DelayedTargetValidation]attribute | RFC | 
| Make OPcachea non-optional part of PHP | RFC | 
| Customize properties during clone("Clone with") | RFC | 
| Support finalon property promotion | RFC | 
| Pipe operator ( mixed |> callable) | RFC | 
| Support Attributes on Constants | RFC | 
| Grapheme cluster for levenshtein, grapheme_levenshtein function | RFC | 
| Asymmetric Visibility for Static Properties | RFC | 
| Add #[NoDiscard]attribute - marking return values as important | RFC | 
| Extend #[Override]to target properties | RFC | 
| Add get_error_handler()andget_exception_handler()functions | RFC | 
| Support Closures in constant expressions | RFC | 
| First Class Callables in constant expressions | RFC | 
| Persistent curlshare handle improvement | RFC | 
| Fatal error backtraces, fatal_error_backtracesini setting | RFC | 
| Change Directoryclass to behave like a resource object | RFC | 
| Add array_first()andarray_last() | RFC | 
| Cookies Having Independent Partitioned State (CHIPS) | RFC | 
| Add RFC3986 and WHATWG URL compliant API | RFC | 
| 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 useimports | RFC | 7.0 | 
| Throwabletype | RFC | 7.0 | 
| RNG functions random_bytesandrandom_int | RFC | 7.0 | 
| ?nullabletype | RFC | 7.1 | 
| voidreturn 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_signalsfunction | RFC | 7.1 | 
| Native objecttypehint | 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_countablefunction | 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 WeakReferenceclass | 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 | 
| matchexpression | RFC | 8.0 | 
| Nullsafe property access - ?-> | RFC | 8.0 | 
| WeakMapclass | RFC | 8.0 | 
| wider application of variadic parameters | 8.0 | |
| staticreturn type | RFC | 8.0 | 
| get_class on object shorthand - $someObject::class | RFC | 8.0 | 
| Stringableinterface | RFC | 8.0 | 
| abstract private mtehods in traits | RFC | 8.0 | 
| throwas expression | RFC | 8.0 | 
| paramter list trailing comma | RFC | 8.0 | 
| Non-capturing catches - catch (Type) | RFC | 8.0 | 
| Native mixedtype | RFC | 8.0 | 
| removal of invalid enforcement of private method variance rules | RFC | 8.0 | 
| String functions str_starts_withandstr_ends_with | RFC | 8.0 | 
| str_contains | RFC | 8.0 | 
| JIT | RFC | 8.0 | 
| get_debug_typefunction | 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 neverreturn type | RFC | 8.1 | 
| new in initializers - __construct(?Foo $foo = new Foo()) | RFC | 8.1 | 
| readonlyproperties | RFC | 8.1 | 
| Class constants can be final | RFC | 8.1 | 
| array_is_listfunction | RFC | 8.1 | 
| $GLOBALSrestrictions | RFC | 8.1 | 
| Internal method return types | RFC | 8.1 |