Zum Inhalt springen

injectExtensionRepository vs @inject

Erstellt am 12. November 2012 · 6 Antworten · letzte Antwort am 14. November 2012

Tags: Frage

karlchen ·

Hallo,

ich bin recht neu was Extbase und Fluid angeht und frage mich bei einigen Sachen wieso, warum, weshalb und würde ich über jede noch so kleine Zusatz Info freuen 🙂

Ich habe jetzt versucht mit der Git Version vom extension_builder in der GIT Version von TYPO3 6.0 eine Extension anzulegen.

So weit so gut, eine Sache über die Ich gerade gestolpert bin ist die Nutzung von

// aus sysext/about Exension
	public function injectExtensionRepository(\TYPO3\CMS\About\Domain\Repository\ExtensionRepository $extensionRepository) {
		$this->extensionRepository = $extensionRepository;
	}

In meiner Extension aus dem extension_builder bekomme ich allerdings "nur" eine Anotation

	/**
	 * projectRepository
	 *
	 * @var \TYPO3\MyExtension\Domain\Repository\ProjectRepository
	 * @inject
	 */
	protected $projectRepository;

Warum einmal so und einmal so ? Gibt es Vor oder Nachteile bei der Nutzung von einer Variante ?
Und wo kann man eventuell weitere Informationen zu solchen Sachen nachlesen ?
Gibt es hier schon Dokumentationen ?

Vielen Dank schon mal für alle Tipps 🙂

kainobi ·

Macht für das Endresultat keinen Unterschied, wie man es macht. @inject wurde nachträglich eingeführt, um mit FLOW3 gleichzuziehen...

karlchen ·

alles klar, vielen Dank.

wollte mich da ein wenig an den Core Extensions orientieren, doch dann scheint die dortige Praxis auch schon wieder ein wenig veraltet zu sein?

Unbekannter Benutzer ·

Naja beide Wege sind erlaubt und in bestimmten Fällen will man die inject methode haben, aber ich vermute es ist zum Teil auch eine Kompatibilitätsfrage d.h. damit die sysext auch zu älteren Extbase Versionen kompatibel sind.

karlchen ·

hallo kitsunet,

stimmt, sicher auch ne Kompatiblitätsfrage, sonst müssten ja für jede TYPO3 Version wieder die Extbase Core Extensions angepasst werden.

Doch weil sagst:

kitsunet schrieb

Naja beide Wege sind erlaubt und in bestimmten Fällen will man die inject methode haben ...

Da ich recht neu bin in dem Thema, könntest du mir sagen welche Fälle es sind wo man es mal so oder besser so macht ? Bisher fehlt mir da ein wenig die Entscheidungsgrundlage.

Unbekannter Benutzer ·

Aber klar, generell würde ich immer auf die "einfache" Variante mit Annotation setzen (sofern ich mit einer Extbase Version arbeite in der das funktioniert), die inject Methode braucht man manchmal fürs Testing weil du da eventuell ein Mock Object injecten willst statt dem echten, aber das merkt man eigentlich meistens 😉