Hallo,
ich bin mir derzeit unterschiedliche DI Container am anschauen und kann teilweise einige Sachen nicht nachvollziehen. Ganz besonders die Tatsache, dass man Services einfach nur einen namen gibt und mit dem Servicenamen arbeitet.
Hat uns die OOProgrammierung dafür nicht interfaces geschenkt?
Beispiel:
$di->get('service.logger');
hier wird anhand des strings service.logger der logger geholt. dabei ist völlig unklar was der logger für ein objekt ist und welche methoden dieser implementiert.
warum nicht so?:
$di->get('\framework\iLogger');
der unterschied ist, dass der DI Container nun die richtige Klasse für das Interface zurück gibt. Als Key kann also nur ein Interface verwendet werden.
Es sollte ja sowieso so sein, das jedes Interface nicht einen gewissen concern angehaftet ist. demnach sollte dies doch völlig problemlos möglich sein?
ich wäre auch super dankbar wenn ihr mir näher bringen könntet, warum meine lösung schlecht ist
ich bin mir derzeit unterschiedliche DI Container am anschauen und kann teilweise einige Sachen nicht nachvollziehen. Ganz besonders die Tatsache, dass man Services einfach nur einen namen gibt und mit dem Servicenamen arbeitet.
Hat uns die OOProgrammierung dafür nicht interfaces geschenkt?
Beispiel:
$di->get('service.logger');
hier wird anhand des strings service.logger der logger geholt. dabei ist völlig unklar was der logger für ein objekt ist und welche methoden dieser implementiert.
warum nicht so?:
$di->get('\framework\iLogger');
der unterschied ist, dass der DI Container nun die richtige Klasse für das Interface zurück gibt. Als Key kann also nur ein Interface verwendet werden.
Es sollte ja sowieso so sein, das jedes Interface nicht einen gewissen concern angehaftet ist. demnach sollte dies doch völlig problemlos möglich sein?
ich wäre auch super dankbar wenn ihr mir näher bringen könntet, warum meine lösung schlecht ist
Kommentar