Dependency Injection and method signatures
- by sunwukung
I've been using YADIF (yet another dependency injection framework) in a PHP/Zend app I'm working on to handle dependencies. This has achieved some notable benefits in terms of testing and decoupling classes.
However,one thing that strikes me is that despite the sleight of hand performed when using this technique, the method names impart a degree of coupling.
Probably not the best example -but these methods are distinct from ... say the PEAR Mailer. The method names themselves are a (subtle) form of coupling
//example
public function __construct($dic){
$this->dic = $dic;
}
public function example(){
//this line in itself indicates the YADIF origin of the DIC
$Mail= $dic->getComponent('mail');
$Mail->setBodyText($body);
$Mail->setFrom($from);
$Mail->setSubject($subject);
}
I could write a series of proxies/wrappers to hide these methods and thus promote decoupling from , but this seems a bit excessive. You have to balance purity with pragmatism...
How far would you go to hide the dependencies in your classes?