PhpStorm bietet jede menge Funktionen an, eine sehr nette Funktion davon ist das Live-Template. Live-Templates dienen dazu, mit einem Schlüsselwort einen kompletten Codeabschnitt automatisch zu generieren. Dabei kann man Variablen definieren die dann individuell gesetzt werden können und den Code vervollständigen.
Nachdem ich nun mehrmals ein repository in TYPO3 mit Extbase via „injectTestRepository“ erstellen musste, stellte ich fest das dies eins der Dinge ist die richtig aufhalten können.
Ich habe mir zwei Live-Templates erstellt mit dem ich ein „injectRepository“ und ein allgemeines „injectObject“ erstellen lassen kann und möchte Sie Euch heute einmal vorstellen.
Die Live-Templates kann man in PhpStorm über
File > Settings > IDE Settings > Live Templates
erstellen.
Object Injection Live Template
Template text:
/** * @var Tx_$DOMAIN_OBJECT$ */ protected $$$VAR_NAME$; /** * Injection of Tx_$DOMAIN_OBJECT$ * * @param Tx_$DOMAIN_OBJECT$ $$$VAR_NAME$ */ public function inject$NAME$(Tx_$DOMAIN_OBJECT$ $$$VAR_NAME$) { $$this->$VAR_NAME$ = $$$VAR_NAME$; }$END$
Das ganze sollte dann in etwa so aussehen:
Nach einem klick auf „Edit variables“ sollte man die Variablen wie folgt einstellen:
Nun kann man über den vorher definieren Shortcut (Standard ist Strg+J) im PHP-Code das Live Template einfügen:
und man erhält den definierten Codeblock.
Die erste Eingabe die man macht ist der Name des Objektes das man injecten möchten, die Autovervollständigung sollte aktiviert werden:
Nachdem man die Klasse ausgewählt hat und die Auswahl bestätigt, kommt man zum nächsten Eingabeblock. Hier muss der Name des Objektes in letzzer Ebene eingegeben werden, bei der Eingabe merkt man wie sich der dazugehörige Variablenname automatisch mitändert:
Das Ergebnis ist nun ein vollständiger Codeblock mit allen nötigen PHPDoc Angaben um das Objekt erfolgreich von Extbase generieren zu lassen. Ein Abwandlung in eine FLOW3-Form wäre da ohne weiteres möglich.
Repository Injection Live Template
Der Live Template Text:
/** * @var Tx_$PACKAGE$_Domain_Repository_$NAME$ */ protected $$$VAR_NAME$; /** * Injects repository of $NAME$ * * @param Tx_$PACKAGE$_Domain_Repository_$NAME$ $$$VAR_NAME$ */ public function inject$NAME$(Tx_$PACKAGE$_Domain_Repository_$NAME$ $$$VAR_NAME$) { $$this->$VAR_NAME$ = $$$VAR_NAME$; }$END$
Auch wenn das Einrichten oftmals ein bisschen herumprobieren benötigt, erspart man sich auf die Dauer einiges an arbeit.
Sofern man diese Funktion natürlich auch aktiv einsetzt! 🙂
Hey!
Schöner Artikel, kannst du das fehlende Bild noch mal uploaden oder neu verknüpfen?
Hey! Danke! Ich hab das Bild wieder eingefügt. Außerdem hab ich noch eine kleine änderung am Template für das Repository gemacht.
Super, Danke! 🙂