Extbase - Dependency Injection: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 5: Zeile 5:
 
So gehts:
 
So gehts:
 
=== Dependency Injection Beispiel ===
 
=== Dependency Injection Beispiel ===
In deinem Controller füge folgendes hinzu um das Repository '''SomeRepository''' nutzen willst.
+
In deinem Controller füge folgendes hinzu um das Repository '''SomeRepository''' nutzen willst.Danach kannst du '''$this->someRepository''' und all seine Methoden auch in diesem Controller nutzen.
 +
 
 +
'''Hinweis:''' Nach Änderung System Cache löschen !
 +
 
 
====Dependency Injection 'TYPO3 ab 6.0====
 
====Dependency Injection 'TYPO3 ab 6.0====
 +
Wechsel zur Namespace schreibweise (den Namespace kopiert man sich am besten aus der gewünschten Extension)
 
<syntaxhighlight lang="php">
 
<syntaxhighlight lang="php">
 
/**
 
/**
Zeile 16: Zeile 20:
  
 
====Dependency Injection TYPO3 = 4.7 ====
 
====Dependency Injection TYPO3 = 4.7 ====
 
+
Keine Inject Methode mehr notwendig dafür @inject im Kommentarbereich
 
<syntaxhighlight lang="php">
 
<syntaxhighlight lang="php">
 
/**
 
/**
Zeile 26: Zeile 30:
  
 
==== Dependency Injection TYPO3 vor 4.7 ====
 
==== Dependency Injection TYPO3 vor 4.7 ====
Inject Funktion...
+
Inject Funktion notwendig.
 
<syntaxhighlight lang="php">
 
<syntaxhighlight lang="php">
 
/**
 
/**
Zeile 42: Zeile 46:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Jetzt kann man $this->someRepository mit all seinen Methoden auch in diesem Controller nutzen.
 
 
'''Hinweis:''' Nach Änderung System Cache löschen !
 

Aktuelle Version vom 25. Juni 2015, 15:45 Uhr

Dependency Injection benötigst du, wenn du aus deiner Extension heraus auf die Daten anderer Extensions zugreifen willst.

Außerdem ist es nützlich, wenn du in einer Extension mit verknüpften Tabellen alle Daten einer verknüpften Tabelle ohne das Hauptobjekt zugreifen willst.

So gehts:

Dependency Injection Beispiel[Bearbeiten]

In deinem Controller füge folgendes hinzu um das Repository SomeRepository nutzen willst.Danach kannst du $this->someRepository und all seine Methoden auch in diesem Controller nutzen.

Hinweis: Nach Änderung System Cache löschen !

Dependency Injection 'TYPO3 ab 6.0[Bearbeiten]

Wechsel zur Namespace schreibweise (den Namespace kopiert man sich am besten aus der gewünschten Extension)

/**
 * @var \Vendor\Extension\Domain\Repository\SomeRepository
 * @inject
 */
protected $someRepository;

Dependency Injection TYPO3 = 4.7[Bearbeiten]

Keine Inject Methode mehr notwendig dafür @inject im Kommentarbereich

/**
 * @var Tx_MyExtension_Domain_Repository_SomeRepository
 * @inject
 */
 protected $someRepository;

Dependency Injection TYPO3 vor 4.7[Bearbeiten]

Inject Funktion notwendig.

/**
 * @var Tx_MyExtension_Domain_Repository_SomeRepository
 */
 protected $someRepository;

/**
 * Inject SomeRepository
 * @param Tx_MyExtension_Domain_Repository_SomeRepository $someRepository
 * @return void
 */
public function injectSomeRepository(Tx_MyExtension_Domain_Repository_SomeRepository $someRepository) {
  $this->someRepository = $someRepository;
}