---
title: "Verwendung von Dependency Injection"
url: "https://www.typo3.net/d/107996-verwendung-von-dependency-injection"
source: "typo3.net"
tags: ["Extensions","Extbase","Frage"]
created: "2011-10-31"
last_reply: "2011-11-02"
replies: 2
solved: true
page: 1
pages: 1
lang: "de"
---

# Verwendung von Dependency Injection

Extensions › Extbase · 2 Antworten · gelöst · gestartet 2011-10-31

## Frage

**Unbekannter Benutzer** · 2011-10-31 · [Beitrag #1](https://www.typo3.net/d/107996-verwendung-von-dependency-injection/1)

Laut [Extbase-Dokumentation](http://forge.typo3.org/projects/typo3v4-mvc/wiki/Dependency_Injection_%28DI%29) soll man ja Dependency Injection statt t3lib_div::makeInstance oder new verwenden.

Das bedeutet aber doch, dass die injizierten Klassen immer erstellt werden.

Ich habe eine Controller-Klasse, die in einer (!) Action über eine Service-Klasse eine Verbindung zu einer Datenbank auf einem anderen Server herstellt. Wenn ich in der Controller-Klasse eine Dependency Injection für diese Service-Klasse verwende, wird doch bei jedem Controller-Aufruf eine solche Datenbank-Verbindung aufgebaut - obwohl ich sie nur in der einen Action benötige - mit new oder makeInstance würde das nicht passieren.

Natürlich könnte ich die Datenbank-Verbindung nicht im Konstruktor der Service-Klasse, sondern später in den Datenbank-Abfragen aufbauen, aber damit ist der Sinn der Service-Klasse auch irgendwie dahin.

Die Dependency Injection scheint mir dafür unsinnig zu sein - wie sollte man vorgehen?

## Beste Antwort

**freshman17** · 2011-10-31 · [Beitrag #2](https://www.typo3.net/d/107996-verwendung-von-dependency-injection/2)

Du kannst die DI mit den ObjectManager bewerkstelligen.

Beispiel:

```typoscript
config.tx_extbase {
  objects {
    Tx_MyExt_Domain_Repository_FooRepositoryInterface {
      className = Tx_MyExt2_Domain_Repository_BarRepository
    }
  }
}
```

in deiner Action:

```php
$barRepository = $this->objectManager->get('Tx_MyExt_Domain_Repository_FooRepositoryInterface');
```

## Antworten

### [#2](https://www.typo3.net/d/107996-verwendung-von-dependency-injection/2) · freshman17 · 2011-10-31 · Beste Antwort

(Text siehe oben unter „Beste Antwort“.)

### [#3](https://www.typo3.net/d/107996-verwendung-von-dependency-injection/3) · Unbekannter Benutzer · 2011-11-02

Das Typoscript wird nicht benötigt. So geht's:

```php
$externalDB = $this->objectManager->get('Tx_MyExt_Service_ExternalDatabase');
```

Vielen Dank.

---

Quelle: „Verwendung von Dependency Injection“, typo3.net, https://www.typo3.net/d/107996-verwendung-von-dependency-injection
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
