> He'll implement a factory or container or anything himself. It's none of our business.

Ok. That works for the end-user. What about about another component provider that says: "hey we work with any implementation that supports PSR-MessageNumber!" This component provider would need to someone be able to create message, no?

> That's kind of the thing, though ... Instantiation isn't an interface thing, it's an implementation detail. Enforcing factory interfaces for this purpose is basically a back door method to put __construct into the interface.

Hey, at least I didn't put a __construct() method on the interfaces :)