ウィキペディアから引用されたDIの定義は次のように述べています。
A.高レベルのモジュールは低レベルのモジュールに依存するべきではありません。どちらも抽象化に依存する必要があります。B.抽象化は詳細に依存するべきではありません。詳細は抽象化に依存する必要があります。
私はその原則を私のコードに適用しようとしています:
class Printer{
private $logger;
function __construct(Zend_Log $logger){
$this->logger=$logger;
}
function print(){
//Some code
$this->logger->log('Logger in action ;)');
}
}
なぜPrinter
クラスZend_Log
が抽象クラスでもインターフェースでもないことに依存するので、依存性逆転の原則に違反しています。
Zend_Log
抽象クラスを拡張したり、インターフェイスを実装したりしないことを知って、どうすれば修正できますか?