Definicja DI cytowany z Wikipedii stwierdza:Wykonywanie tej klasy są zgodne z zasadą Dependency Inversion
A. moduły wysokiego szczebla nie powinno zależeć od modułów niskopoziomowych. Obie powinny zależeć od abstrakcji. B. Abstrakcje nie powinny zależeć od szczegółów. Szczegóły powinny zależeć od abstrakcji.
Próbuję zastosować tę zasadę do mojego kodu:
class Printer{
private $logger;
function __construct(Zend_Log $logger){
$this->logger=$logger;
}
function print(){
//Some code
$this->logger->log('Logger in action ;)');
}
}
Teraz ponieważ dlaczego Printer
klasa zależy Zend_Log
który nie jest ani klasa abstrakcyjna ani interfejsu potem mam naruszenie Dependency Inversion zasada.
Jak mogę to naprawić, wiedząc, że Zend_Log
nie rozszerza klasy abstrakcyjnej ani nie implementuje interfejsu?
Ładne pytanie .. –