I left programming in PHP when isset() was a lifestyle, array() had just become [], and types lived in docblocks where the runtime couldn't see them. The language you're returning to grew toward the exact things that pulled me to Ruby and Go: real signatures, immutability you can enforce, pattern matching, values that can't lie about what they are. Almost everything below follows one theme — declare your intent in the code, and let the engine enforce it — which means a huge amount of the defensive scaffolding in my old projects simply gets deleted, not rewritten.
Part One: Null stops being a minefield
Half of any 5.6 codebase is isset() ceremony. Three operators killed most of it.
1. Null coalescing — ??
// The old ritual







