Finally PHP8.1 is out! ! ! Please read the official PHP announcement for details: https://www.php.net/releases/8.1/en.php
PHP 8.1.0 is now available Released, this version brings many improvements and new features.
Enumerations
Use an enumeration instead of a set of constants and validate immediately.
Read-only properties
Read-only properties cannot be changed after initialization, i.e., after they have been assigned a value. They can be used to model value objects and data transfer objects.
First-class callable syntax
Now you can get a reference to any function.
New initializer
Objects can now be used as default parameter values, static variables and global constants, and property parameters, This effectively makes it possible to use nested properties.
Pure intersection type
When a value needs to satisfy multiple type constraints at the same time, use the intersection type. Note that it is currently not possible to mix intersection and union types, such as A&B|C.
Never return type
A function or method declared using the never type means that it will not return a value and will throw an exception Or end the execution of the script by calling die(), exit(), trigger_error() or similar.
Final class constants
Final class constants can be declared to prevent them from being overridden in subclasses.
Explicit octal number representation
Octal numbers can now be written using an explicit 0o prefix.
Fibers
Fibers are primitives for implementing lightweight cooperative concurrency. They are a way to create blocks of code that can be paused and resumed like generators, but from anywhere in the stack. Fibers themselves do not provide concurrency, an event loop is still required. However, they allow sharing the same API through blocking and non-blocking implementations. Fibers allow for getting rid of the boilerplate code previously seen in Promise::then() or generator-based coroutines. Libraries often build further abstractions around Fiber so there is no need to interact with them directly.
Array unpacking support for string-keyed arrays
PHP previously supported unpacking inside arrays via the spread operator , but only if the array has integer keys. Arrays can now also be unpacked using string keys.
Performance Optimization
PHP 8.1 also has some changes in performance, including:
JIT backend for ARM64 (AArch64)
Inheritance caching (avoids relinking classes on every request)
Quick class names Parsing (avoiding lowercase and hash lookups)
timelib and ext/date performance improvements
SPL file system iterator improvements
Serialization/deserialization optimization
Some internal function optimizations (get_declared_classes(), explode(), strtr(), strnatcmp(), dechex( ))
JIT improvements and fixes