@BenMorel The return type documentation is neither here nor there -- I was only providing some context.

> That's the whole purpose of interfaces and OOP.

I understand OOP very well. Unfortunately arbitrary implementation rules are why frameworks are unusably slow for my own work. Client-side? Fine. But you simply cannot enforce performance penalties on servers. Period. Doing so is short-sighted and has far-reaching and demonstrable negative effects. My argument is that we should be enforce interaces -- not enforcing a standard level of mediocrity on everyone.

> you're free to ignore all of this, and use procedural programming (no offence)

My code is far more object-oriented than what you find in the "popular PHP MVC frameworks" (no offence). These frameworks are bastions of `static` class-oriented-programming, service locators, LoD violations and Liskov substitution problems. So I don't need a lecture on that. My argument addresses enforcing rules that standards have no business enforcing -- not about OOP vs. procedural programming.

> Frameworks are about interoperability, and the performance impact of instantiating an object is the last of the concerns

I agree and this is why I pointed out my specific use-case. Enforcing implementation details in general is a severe overreach with demonstrable negative effect on a portion of the community that would otherwise embrace standardization. HTTP doesn't care about your memory constraints or abstractions. It cares about bytes on a wire. Anything else is dictatorial wankery.

> But obviously, nobody forces you to use OOP, or this PSR

This is the real problem. The masses approach PSRs as if they're real standards and not interoperability aids because PSR postures itself as a normative standard. People are brainwashed to think that PSR-compliant code is somehow superior (it's not). This is a major problem because adding a composer.json and following a style guide isn't remotely equivalent to writing good code. People like you and I understand this distinction. Most devs do not.

In today's PHP dev community people assume that code ignoring PSRs is bad. It's an unfortunate and ignorant opinion but that's how it is.