

The syntax is TypeA&TypeB, and it means that the variable must be both instanceof TypeA and instanceof TypeB. Union types were added in PHP 8.0, and now PHP 8.1 is introducing intersection types. PhpStorm has an Alt+Enter quick-fix for this:

That is, its internal state can still be changed.Ī readonly property cannot have a default value, but you can initialize it in the constructor as a promoted property. If a readonly property is initialized by an object, it does not become immutable. Properties with the readonly flag must be typed, but if you don’t know the specific type, then you can use the mixed type. This means you can assign a value either in the declaration itself or in a class method. It was possible to achieve similar behavior in previous versions of PHP with a private setter, but the readonly keyword makes classes cleaner and constraints stricter.Ī readonly property can only be initialized in the same scope where it’s declared. Readonly properties are properties that cannot be changed after initialization, meaning after a value is assigned to them. Learn more about enums support in PhpStorm. PhpStorm has supported PHP 8.1 Eums since the 2021.2 release. You can switch from the toolbar or by specifying the requirement in composer.json.Įnumerations can be used instead of a set of constants, and they provide type validation out of the box. Here’s what’s available and how you can use it in the IDE.Īs usual, you can try new features by setting the project language level to PHP 8.1. PhpStorm 2021.3 supports all of the latest language changes.

PHP 8.1 has already been released! We would like to express our thanks to all the contributors and release managers! Read this blog post for details about all the significant updates, demonstrated through a ton of GIFs!

