Generalmente, i costruttori in un'interfaccia sono considerati come anti-pattern. Alcune lingue nemmeno lo consentono.
Quindi non capisco come dovremmo trattare con oggetti immutabili polimorfici in alcuni particolari contesti di IOC ...
Diciamo che dobbiamo istanziare un oggetto polimorfico, la sua classe che implementa la nostra interfaccia è implementata e fornita dal client.
Come scenario stupido ma semplice, diciamo che questo oggetto è un oggetto valore e come tale dovrebbe essere immutabile, il che significa che lo stato dell'oggetto dovrebbe essere valido dal momento in cui viene istanziato ...
Il nostro codice:
// A user class implementing our interface...
$immutablePolymorphe = $userConfig['immutable_polymorphe_class'];
// Here we must know what to inject to its constructor...
$immutablePolymorphe = new $immutablePolymorphe($state);
// Then do something with that polymorphe...
Quindi non dobbiamo costringere qui il costruttore, quindi l'interfaccia? Mi manca qualcosa?