Hi Niklas, I think there is a misunderstanding.
- if you use the interface, then you use the parameters defined in that interface => so yes, you should NOT pass extra parameters (we agree on that, that doesn't make sense)
- if you don't use the interface but the implementation directly, then it's OK to use the extra parameters (because you code against the implementation)
That's why OOP (and PHP) allows implementations to have more parameters than defined in the interface (because you stay compatible with the interface).
Now we usually say "code against interfaces", because obviously that's much better. But here for container interoperability we have to consider the fact that not all frameworks can switch containers entirely. So some pieces of code will still use the implementation, that's why we have to be compatible with this.
In any case, it doesn't make sense that an interface forbids extra optional parameters, because again OOP and PHP allows it. The question is whether we want to make that explicit or not in the document: I usually like explicit because it removes confusion for implementors (DIC authors).
Matthieu