---
title: "Dependency Injection: Object Manager"
url: "https://www.typo3.net/d/114559-dependency-injection-object-manager"
source: "typo3.net"
tags: ["Extensions","Extbase","Frage"]
created: "2013-04-16"
last_reply: "2013-04-19"
replies: 7
solved: false
page: 1
pages: 1
lang: "de"
---

# Dependency Injection: Object Manager

Extensions › Extbase · 7 Antworten · gestartet 2013-04-16

## Eröffnungsbeitrag

**BjoernBoba** · 2013-04-16 · [Beitrag #1](https://www.typo3.net/d/114559-dependency-injection-object-manager/1)

Bei meiner Extension wollte ich zum Erstellen neuer Objekte mit einem Object Manager arbeiten.
Dazu bin ich in meinem Controller analog zu dem Beispiel von forge.typo3.org vorgegangen. Hier ist noch der Link dazu:
<http://forge.typo3.org/projects/typo3v4-mvc/wiki/Dependency_Injection_%28DI%29>

Mein betroffener Controller sieht folgendermaßen aus:

```php
<?php
namespace TYPO3\Survey\Controller;

/**
 *
 *
 * @package survey
 * @license http://www.gnu.org/licenses/gpl.html GNU General Public License, version 3 or later
*
*/
class SurveyController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
	/**
	 * @var Tx_Extbase_Object_ObjectManagerInterface 
	 */
	protected $objectManager;

	/**
	 * Injects the object manager
	 *
	 * @param Tx_Extbase_Object_ObjectManagerInterface $objectManager
	 * @return void
	 */
	public function injectObjectManager(Tx_Extbase_Object_ObjectManagerInterface $objectManager) {
		$this->objectManager = $objectManager;
	}

	/**
	 * surveyRepository
	 *
	 * @var \TYPO3\Survey\Domain\Repository\SurveyRepository
	 * @inject
	 */
	protected $surveyRepository;

	/**
	 * action list
	 *
	 * @return void
	 */
	public function listAction() {
		$surveys = $this->surveyRepository->findAll();
		$this->view->assign('surveys', $surveys);
	}

	/**
	 * action show
	 *
	 * @param \TYPO3\Survey\Domain\Model\Survey $survey
	 * @return void
	 */
	public function showAction(\TYPO3\Survey\Domain\Model\Survey $survey) {
		$newSession = $this->objectManager->create('Tx_Survey_Domain_Model_Session');

		for ($i = 1; $i <= $survey->getQuestions()->count(); $i++) {
			$newAnswer = $this->objectManager->create('Tx_Survey_Domain_Model_Answer');
			$newSession->addAnswer($newAnswer);
		}					}
		
		$this->view->assign('survey', $survey);
	}

}
?>
```

Allerdings wird nun bei einem Aufruf der Seite, auf der das Plugin liegt, folgender Fehler angezeigt:
Class TYPO3\Survey\Controller\Tx_Extbase_Object_ObjectManagerInterface does not exist

ReflectionException thrown in file
C:\xampp\htdocs\prog01\typo3\sysext\extbase\Classes\Object\Container\ClassInfoFactory.php in line 99.

Ich hoffe, dass mir hierbei jemand weiterhelfen kann, bzw. sagen kann wieso diese Klasse nicht gefunden wird.
Denn es ist ja keine von mir erstellte Klasse, sondern eine in Extbase bestehende.
Ich bin für jede Hilfe dankbar!
Daher schonmal Danke im voraus.

Mit freundlichen Grüßen
BjoernBoba

## Antworten

### [#2](https://www.typo3.net/d/114559-dependency-injection-object-manager/2) · LuP · 2013-04-18

Hallo,

wenn Du schon beim namespace bist, solltest Du auch dabei bleiben.

```php
/**
 * @param \TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager
 * @return void
 */
public function injectObjectManager(\TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager) {
	$this->objectManager = $objectManager;
}
```

VG,
LuP

### [#3](https://www.typo3.net/d/114559-dependency-injection-object-manager/3) · kainobi · 2013-04-18

Übrigens ist der ObjectManager bereits im AbstractController vorhanden, du musst den also hier nicht mehr injecten.

### [#4](https://www.typo3.net/d/114559-dependency-injection-object-manager/4) · BjoernBoba · 2013-04-18

Ja das mit dem Namespace stimmt, das ist nicht einheitlich. Das löst allerdings das Problem nicht.

Also kann ich den dann einfach mit new ObjectManager() erstellen?

### [#5](https://www.typo3.net/d/114559-dependency-injection-object-manager/5) · LuP · 2013-04-18

> **BjoernBoba schrieb:**
>
> Also kann ich den dann einfach mit new ObjectManager() erstellen?

nein, auf gar keinen Fall! Immer schön bei der DI bleiben.

Mir ist vorhin nicht aufgefallen, aber TYPO3 als Vendor-Name darfst Du nicht in eigener Erweiterung nutzen.

VG,
LuP

### [#6](https://www.typo3.net/d/114559-dependency-injection-object-manager/6) · LuP · 2013-04-18

Habe den Post von kainobi übersehen, aber ich stimme ihm zu. Der ObjectManager steht Dir bereits aus dem AbstractController zur Verfügung.

VG,
LuP

### [#7](https://www.typo3.net/d/114559-dependency-injection-object-manager/7) · BjoernBoba · 2013-04-18

Wie muss ich denn dann damit verfahren?
Also wenn ich ihn nicht injecten muss, ihn aber auch nicht mit new erstellen soll.

Und was heißt als "Vendor-Name"?

Schonmal vielen Dank für eure bisherigen Antworten :)

### [#8](https://www.typo3.net/d/114559-dependency-injection-object-manager/8) · BjoernBoba · 2013-04-19

Ist gelöst. Vielen Dank für die Antworten :)

---

Quelle: „Dependency Injection: Object Manager“, typo3.net, https://www.typo3.net/d/114559-dependency-injection-object-manager
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
