Mine are:
(Best) Named Arguments — I usually like to stick to syntax which is common among the majority of languages I know (multi-lingual), but this looks pretty useful to me. I might try it.

(Best) Mixed Declaration — Useful for improving self-documentation in certain cases.

(Best) Nullsafe Operator — I can’t conceptualize where this would be helpful in my code yet, but I’m sure there are plenty of places this could come in handy.

As a runner up, I am intrigued by the idea of creating an object from an expression, just by using new. It feels familiar, comparable to JS’s “everything is really an object” mentality.

And also, hi. This is my first top-level post on Reddit.
I have nothing against named arguments (it’s just a tool and you can use it or not) but I find it funny that lack of them is often mentioned in those “PHP sucks” rants to blame the language for blatantly terrible app designs. I mean the typical function with tons of optional parameters:
… as organically grown alternative to e.g.:

My favs are:
New string to number comparison rules involving zero
Union types
Throw promoted to expression

Worst? I wouldn’t say that. But I’m scared by attributes. I hope we don’t end up having to support three syntaxes for deprecated annotation.
It will be interesting to see how much attributes are used over the next few years. Especially since there are still things that annotations can do but attributes cannot. The whole nested thingee.

On the other hand, annotations have not always been as carefully designed as perhaps they should have been. Migrating to attributes will give developers a chance to clean up some stuff.

I’m most looking forward to using constructor property promotion, because I am sick and tired of writing constructors. Most classes I create require 30-60 seconds of writing boilerplate code to add the properties and wire them up in the constructor. I’ll be happy to be done with it.
Phpstorm to the rescue?

Property promotion is nice and all but it was never really an issue with IDEs.
If all your class have the same boilerplate, you can extend to an abstract class

Regarding 1:
“majority of languages”: e.g. Python and C# have it outright, and you can in most languages pass an object, very often used in e.g. JavaScript for passing configuration options.

This is also essential to “documentation by code”.
JS doesn’t have named parameter passing though, just a somewhat odd object construction rule where your variables have to happen to be named the exact same thing as the intended property name.
cool, didn’t know about the nullsafe

Part of me wants to say “Turning deprecation warnings into errors”, but another part of me knows that I’ll be the one to clean up my coworkers’s code from 20 years ago that makes delibrate use of the @ operator and a reduced error level…

Worst: TypeErrors for closed resources.
Mixed type declaration is just how PHP always has been before types became a thing, only with proper declaration which (if well used) conveys intent.

All type declarations are improvements over the phpdoc equivalents we used before since we want type checking to happen at the language level, you’ll benefit from it whatever your choice of external tools.
Even Java allows passing of an Object. And pointers in C/C++ can essentially function as passing of mixed types

source