PHP unterstützt ja keinerlei Möglichkeit Variablen Lazy nachzuladen. Insbesondere bei vielen Abhänigkeiten im DiC kann dies problematisch sein, da alle Services von denen ein Service abhängig ist, vorher initialisiert werden müssen. Eine Möglichkeit dieses zu umgehen wäre:
in diesem Fall würde man von dem DiC anstatt des Services eine anonyme Funktion bekommen welche beim Aufruf die korrekte Instanz zurückgibt. Dies hat jedoch den gewaltigen Nachteil, dass die @var Annotation nur noch bedingt stimmt, die CodeCompletion funktioniert nicht mehr und womöglich sind einige Entwickler schnell verwirrt.
Vorteile:
+ Lazy
Nachteile
- "falsche" @var Annotation
- Verwirrung
- keine CodeCompletion
was sagt ihr zu einer solchen Implementierung?
PHP-Code:
class service implements iService {
/**
* @var \de\iMailer
* @inject
* @lazy
*/
private $mailService;
function doStomething() {
$this->mailService()->sendMail();
}
}
Vorteile:
+ Lazy
Nachteile
- "falsche" @var Annotation
- Verwirrung
- keine CodeCompletion
was sagt ihr zu einer solchen Implementierung?
Kommentar