Bitte verzeihen Sie die mögliche Naivität dieser Frage, aber ich werde mich wirklich verwirrt. Es scheint, dass es eine gute Methode ist, Dependance Injection zu verwenden, um den Code zu entkoppeln, damit Ihre Klassen mit ihren Abhängigkeiten geladen werden. Stellen Sie sich die folgende, wo Klasse Foo eine Abhängung der Klasse Bar hatPHP - wenn Autoloading, warum würden Sie Dependance-Injektion verwenden?
namespace Classes;
class Foo{
protected barInstance;
public function __construct(Bar $barInstance){
$this->barInstance=$barInstance;
}
}
Allerdings, wenn Sie Ihre Klassen automatisch laden dann sicherlich die folgenden nicht genau das gleiche, ohne die Notwendigkeit von DI?
namespace Classes;
use Classes/Bar;
class Foo{
protected barInstance;
public function __construct(){
$this->barInstance=new Bar;
}
}
Danke an alle Antwortenden.
Denn manchmal möchte einige interessante Artikel über DI lesen können Sie keine * neu * 'Bar', sondern eine spezifische * bestehenden * 'Bar'. – ceejayoz
Und weil das Trennen von Problemen (Klasse A, die nicht wissen, wie man eine Instanz von B erstellt), macht es oft einfacher, den Code in einer Unit zu testen (Sie können einfach ein Mock-Objekt übergeben). – JimL