Typo3/PhpStorm: Unterschied zwischen den Versionen

Aus Foxwiki
KKeine Bearbeitungszusammenfassung
K Dirkwagner verschob die Seite Typo3:PhpStorm nach Typo3/PhpStorm, ohne dabei eine Weiterleitung anzulegen: Textersetzung - „:“ durch „/“
 
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Typo3- PhpStorm =
= PhpStorm =
 
* Software für alles, dass Web Development zu tun hat
Kürzlich ist die neue Version 1.2 eines sehr nützlichen Fluid-Plugins für PhpStorm erschienen. Dies möchte ich als Anlass nehmen, um euch PhpStorm als Werkzeug für eine schnellere Entwicklung eurer TYPO3-Projekte vorzustellen. Die Anwendung wird von mir schon seit ein paar Jahren eingesetzt. Zuerst bin ich natürlich mit PhpStorm wegen der Extensionentwicklung für TYPO3 in Berührung gekommen. Inzwischen setze ich diese Software für alles ein, was irgendwie mit Web Development zu tun hat. Ich kann sie auch reinen TYPO3 Integratoren empfehlen, die eigentlich (noch) gar kein PHP programmieren können.
* PhpStorm ist kein einfacher Texteditor, sondern eine Entwicklungsumgebung, die PHP, SQL, CSS, SASS, Less, JavaScript und vieles mehr „versteht“.
 
* So erkennt diese Entwicklungsumgebung die Zusammenhänge zwischen den einzelnen Dateien.
PhpStorm ist kein einfacher Texteditor, sondern eine Entwicklungsumgebung, die nicht nur PHP, sondern auch SQL, CSS, SASS, Less, JavaScript und vieles mehr „versteht“. So erkennt diese Entwicklungsumgebung die Zusammenhänge zwischen den einzelnen Dateien. Über Plugins kann die Funktionalität noch erweitert werden. Und hier sind besonders „TypoScript Plugin“ und „Fluid Plugin“ von Sgalinski Internet Services interessant.
* Über Plugins kann die Funktionalität noch erweitert werden.
 
** „TypoScript Plugin“ und „Fluid Plugin“ von Sgalinski Internet Services
Neben einem kostenlosen Plugin gibt es auch kostenpflichtige Versionen mit erweiterten Funktionen. Falls euch das TypoScript-Plugin von Jetbrains angezeigt wird, solltet ihr dieses deinstallieren! PhpStorm zeigt euch mit den installierten Plugins viele Syntax-Fehler an, so dass Fehler schneller gefunden und behoben werden können.
** Neben einem kostenlosen Plugin gibt es auch kostenpflichtige Versionen mit erweiterten Funktionen.
* Falls das TypoScript-Plugin von Jetbrains angezeigt wird, sollte dieses deinstallieren werden!
* PhpStorm zeigt mit den installierten Plugins Syntax-Fehler an, so werden Fehler schneller gefunden und behoben  


== Settings ==
== Settings ==
While these seem minor at first sight, they ease the work on our QA department and help big time to not let the core decay over time in regards to Code quality and consistency.


[WIP] This article describes the settings you should apply to your PHPStorm IDE to avoid common mistakes. While these seem minor at first sight, they ease the work on our QA department and help big time to not let the core decay over time in regards to Code quality and consistency.
=== Code Style ===
 
* TYPO3 uses PSR-2 as Coding Style for PHP.  
== Code Style ===
To set that in PHPStorm: # Open Settings (or Default Settings, if you want to set this for all projects)  
 
TYPO3 uses PSR-2 as Coding Style for PHP. To set that in PHPStorm: # Open Settings (or Default Settings, if you want to set this for all projects)  
# Go to Editor -> Code Style -> PHP  
# Go to Editor -> Code Style -> PHP  
# Click on "Set from..." (Looks like a link on the top right of the settings window)  
# Click on "Set from..." (Looks like a link on the top right of the settings window)  
Zeile 19: Zeile 20:


=== Autocomplete ===
=== Autocomplete ===
==== Factory methods (makeInstance, ObjectManager->get) ====
==== Factory methods (makeInstance, ObjectManager->get) ====
 
* The TYPO3 core comes with a configuration file for the dynamic return type plugin that gives you autocomplete for factory methods like '''GeneralUtility::makeInstance''' and '''ObjectManager->get'''.  
The TYPO3 core comes with a configuration file for the dynamic return type plugin that gives you autocomplete for factory methods like '''GeneralUtility::makeInstance''' and '''ObjectManager->get'''. To install the plugin in PHPStorm follow these steps: # Open Settings  
* To install the plugin in PHPStorm follow these steps:  
# Open Settings  
# Go to plugins  
# Go to plugins  
# Click the "Browse repositories" button  
# Click the "Browse repositories" button  
Zeile 73: Zeile 74:


== Plugins ==
== Plugins ==
 
* Mit den TypoScript-Plugin beherrscht PhpStorm Syntax Highlighting / Code Folding über mehrere Dateien hinweg, da Objekte und Variablen erkannt werden.  
Mit den TypoScript-Plugin beherrscht PhpStorm Syntax Highlighting / Code Folding über mehrere Dateien hinweg, da Objekte und Variablen erkannt werden. Mit ''Strg + Q'' (''Ctrl + J'' unter OSX) kann du direkt die Dokumentation öffnen. Du kannst einen Strukturbaum und einen Brotkrumenpfad für eine schnellere Navigation nutzen.
* Mit ''Strg + Q'' (''Ctrl + J'' unter OSX) kann du direkt die Dokumentation öffnen.  
 
* Du kannst einen Strukturbaum und einen Brotkrumenpfad für eine schnellere Navigation nutzen.
Bei Fehlern bekommst du direkt einen Hinweis. Und bei Verwendung von <INCLUDE_TYPOSCRIPT: source=“FILE:pfad/zur/datei.t3s“ /> kann die Datei direkt mit ''Strg+Klick'' geöffnet werden.
* Bei Fehlern bekommst du direkt einen Hinweis.  
* Und bei Verwendung von <INCLUDE_TYPOSCRIPT: source=“FILE:pfad/zur/datei.t3s“ /> kann die Datei direkt mit ''Strg+Klick'' geöffnet werden.


[[Image:Bild2.png|top|alt="Screen phpStorm"]]
[[Image:Bild2.png|top|alt="Screen phpStorm"]]


Auch das Fluid-Plugin hilft dir schneller zu arbeiten. Es bietet dir wie auch schon das TypoScript-Plugin Auto-Vervollständigung, Quick-Dokumentation, Strg+Klick zum Anspringen von den Definitionen in anderen Dateien, Syntax Highlighting und Brace Matching für Inline-ViewHelper und Fehler-Hervorhebung.
* Auch das Fluid-Plugin hilft dir schneller zu arbeiten.  
 
* Es bietet dir wie auch schon das TypoScript-Plugin Auto-Vervollständigung, Quick-Dokumentation, Strg+Klick zum Anspringen von den Definitionen in anderen Dateien, Syntax Highlighting und Brace Matching für Inline-ViewHelper und Fehler-Hervorhebung.
Mehr dazu auf der Webseite des Plugin-Entwicklers: [https://www.sgalinski.de/typo3-produkte-webentwicklung/ https://www.sgalinski.de/typo3-produkte-webentwicklung/]
* Mehr dazu auf der Webseite des Plugin-Entwicklers: [https://www.sgalinski.de/typo3-produkte-webentwicklung/ https://www.sgalinski.de/typo3-produkte-webentwicklung/]


=== TypoScript ===
=== TypoScript ===
 
* [http://www.jetbrains.com/phpstorm/ P][http://www.jetbrains.com/phpstorm/ hpStorm] ist eine Integrierte Entwicklungsumgebung (IDE) der Firma [http://www.jetbrains.com/ JetBrains] für die Scriptsprache PHP und andere Webtechnologien und erfreut sich in der TYPO3 Community wachsender Beliebtheit.  
[http://www.jetbrains.com/phpstorm/ P][http://www.jetbrains.com/phpstorm/ hpStorm] ist eine Integrierte Entwicklungsumgebung (IDE) der Firma [http://www.jetbrains.com/ JetBrains] für die Scriptsprache PHP und andere Webtechnologien und erfreut sich in der TYPO3 Community wachsender Beliebtheit. Neben den vielen Features von PhpStorm dürfte auch die Tatsache sein, dass der Hersteller an Open Source Entwickler eine kostenlose[http://www.jetbrains.com/phpstorm/buy/buy.jsp#openSource  Open Source License] vergibt, in deren Genuss viele TYPO3 Core Developer gekommen sind. Die IDE ist sowohl für Windows, Mac als auch Linux verfügbar.
* Neben den vielen Features von PhpStorm dürfte auch die Tatsache sein, dass der Hersteller an Open Source Entwickler eine kostenlose[http://www.jetbrains.com/phpstorm/buy/buy.jsp#openSource  Open Source License] vergibt, in deren Genuss viele TYPO3 Core Developer gekommen sind.  
 
* Die IDE ist sowohl für Windows, Mac als auch Linux verfügbar.
Seit dem Wochenende gibt es jetzt ein Plugin für PhpStorm, dass [http://plugins.jetbrains.com/plugin/?webide&id=6965 TypoScript Unterstützung nachrüstet]. Für den Anfang sind das Syntax Highlighting, Code Folding und die Quick Navigation. Soweit ich das bisher testen konnte, funktioniert das Plugin nur mit dem heute erschienenen [http://confluence.jetbrains.net/display/WI/Web+IDE+EAP 4.0.1 RC], nicht aber mit Version 3.0.3 und älter.
* Es gibt ein Plugin für PhpStorm, dass [http://plugins.jetbrains.com/plugin/?webide&id=6965 TypoScript Unterstützung nachrüstet].  
 
* Für den Anfang sind das Syntax Highlighting, Code Folding und die Quick Navigation.  
Die Installation geht in wenigen Schritten über File => Settings => Plugins =>Browse Repositories und dann nach TypoScript suchen. Am Mac kommt man über PhpStorm => Preferences => Plugins => Browse Repositories zum selben Ergebnis.
* Soweit ich das bisher testen konnte, funktioniert das Plugin nur mit dem heute erschienenen [http://confluence.jetbrains.net/display/WI/Web+IDE+EAP 4.0.1 RC], nicht aber mit Version 3.0.3 und älter.
 
* Die Installation geht in wenigen Schritten über File => Settings => Plugins =>Browse Repositories und dann nach TypoScript suchen.  
Ein großes Dankeschön geht an Alexey Gopachenko und&nbsp;Elena Shaverdova von JetBrains, die diese erste Version entwickelt und kostenlos zur Verfügung gestellt haben. Für die Zukunft ist geplant, das Plugin unter eine Open Source Lizenz zu stellen oder durch die TYPO3 Community weiterentwickeln zu lassen.
* Am Mac kommt man über PhpStorm => Preferences => Plugins => Browse Repositories zum selben Ergebnis.
 
* Ein großes Dankeschön geht an Alexey Gopachenko und Elena Shaverdova von JetBrains, die diese erste Version entwickelt und kostenlos zur Verfügung gestellt haben.  
Bitte testet das Plugin ausführlich und [http://plugins.jetbrains.com/plugin/add_comment/?webide&pid=6965 bewertet es bzw. gebt ein Rating ab]. Weiteres Feedback und Bugs können im [http://youtrack.jetbrains.com/issue/WI-7249 Issue im JetBrains Bugtracker] eingetragen werden. Wenn die TYPO3 Community genügend Interesse an dem Plugin zeigt, wird JetBrains bestimmt gerne weitere Verbesserungen vornehmen!
* Für die Zukunft ist geplant, das Plugin unter eine Open Source Lizenz zu stellen oder durch die TYPO3 Community weiterentwickeln zu lassen.
 
* Bitte testet das Plugin ausführlich und [http://plugins.jetbrains.com/plugin/add_comment/?webide&pid=6965 bewertet es bzw. gebt ein Rating ab].  
Update: Danke an Kabarakh für den Hinweis: wenn man unter Settings => File Types => Recognized File Types => TypoScript&nbsp; noch *.ts einfügt, funktiniert das Plugin auch mit alten Versionen von PhpStorm!
* Weiteres Feedback und Bugs können im [http://youtrack.jetbrains.com/issue/WI-7249 Issue im JetBrains Bugtracker] eingetragen werden.  
 
* Wenn die TYPO3 Community genügend Interesse an dem Plugin zeigt, wird JetBrains bestimmt gerne weitere Verbesserungen vornehmen!
Update 2: Laut Jigal van Hemert kann man die Registered Patterns auch wie folgt erweitern:
* Update: Danke an Kabarakh für den Hinweis: wenn man unter Settings => File Types => Recognized File Types => TypoScript noch *.ts einfügt, funktiniert das Plugin auch mit alten Versionen von PhpStorm!
* Update 2: Laut Jigal van Hemert kann man die Registered Patterns auch wie folgt erweitern:


<nowiki>*.ts setup.txt constants.txt ext_conf_template.txt ext_typoscript_setup.txt ext_typoscript_constants.txt</nowiki>* <nowiki>*.ts</nowiki>
<nowiki>*.ts setup.txt constants.txt ext_conf_template.txt ext_typoscript_setup.txt ext_typoscript_constants.txt</nowiki>* <nowiki>*.ts</nowiki>
Zeile 108: Zeile 111:


=== Fluid ===
=== Fluid ===
* Wahrscheinlich kennt jeder, der mit TYPO3 und PHPStorm arbeitet, bereits das TypoScript-Plugin der Agentur [https://www.sgalinski.de/ sgalinski Internet Services].
* Und falls nicht -> ist eine absolute Pflichtanschaffung und erleichtert die Arbeit mit TypoScript in PHPStorm (und Derivaten) enorm.
* Aus dem gleichen Hause ist seit einer Weile auch ein Fluid-Plugin zu haben, das die Arbeit mit Fluidtemplates unglaublich erleichtert.


Wahrscheinlich kennt jeder, der mit TYPO3 und PHPStorm arbeitet, bereits das TypoScript-Plugin der Agentur [https://www.sgalinski.de/ sgalinski Internet Services]. Und falls nicht -> ist eine absolute Pflichtanschaffung und erleichtert die Arbeit mit TypoScript in PHPStorm (und Derivaten) enorm.
Einige der Features sind
 
* Autovervollständigung: das Plugin analysiert Fluid-Code im gesamten Projekt und ist so in der Lage hilfreiche Vorschläge in der Autovervollständigung anzubieten.
Aus dem gleichen Hause ist seit einer Weile auch ein Fluid-Plugin zu haben, das die Arbeit mit Fluidtemplates unglaublich erleichtert.
* Quick-Dokumentation: Mit der Tastenkombination Strg + Q (Ctrl + J unter OS X) lässt sich jederzeit die Dokumentation zum aktuell ausgewählten Symbol in einem Popup-Fenster anzeigen.
 
Einige der Features sind* Autovervollständigung: das Plugin analysiert Fluid-Code im gesamten Projekt und ist so in der Lage hilfreiche Vorschläge in der Autovervollständigung anzubieten.
* Quick-Dokumentation:&nbsp;Mit der Tastenkombination Strg + Q (Ctrl + J unter OS X) lässt sich jederzeit die Dokumentation zum aktuell ausgewählten Symbol in einem Popup-Fenster anzeigen.
* Direkt zu den richtigen Dateien springen: Dank des Fluid-Plugins sind die gesuchten Dateien nur noch einen Klick entfernt. Bei der Verwendung von Partials, Layouts, Templates oder Sections, kann mit Strg + Klick direkt an die Stelle gesprungen werden an der diese definiert sind.
* Direkt zu den richtigen Dateien springen: Dank des Fluid-Plugins sind die gesuchten Dateien nur noch einen Klick entfernt. Bei der Verwendung von Partials, Layouts, Templates oder Sections, kann mit Strg + Klick direkt an die Stelle gesprungen werden an der diese definiert sind.
* Syntax Highlighting und Brace Matching für Inline-ViewHelper: Das Fluid-Plugin bietet ein auf die Sprache optimiertes Highlighting und Brace-Matching.
* Syntax Highlighting und Brace Matching für Inline-ViewHelper: Das Fluid-Plugin bietet ein auf die Sprache optimiertes Highlighting und Brace-Matching.
* Fehlererkennung: Das Fluid-Plugin ist bestens mit den Eigenheiten der Sprache vertraut und erkennt somit Syntax-Fehler auch an Stellen an denen dies mit den IntelliJ Boardmitteln bisher nicht möglich war.
* Fehlererkennung: Das Fluid-Plugin ist bestens mit den Eigenheiten der Sprache vertraut und erkennt somit Syntax-Fehler auch an Stellen an denen dies mit den IntelliJ Boardmitteln bisher nicht möglich war.
* Das Plugin wird ständig weiterentwickelt, neue Features sind bereits in Planung. [https://www.sgalinski.de/typo3-produkte-webentwicklung/typo3-fluid-phpstorm-intellij/ Alle Infos zum Plugin und zu den Lizenzmodellen findet ihr auf der zugehörigen Website.]


Das Plugin wird ständig weiterentwickelt, neue Features sind bereits in Planung. [https://www.sgalinski.de/typo3-produkte-webentwicklung/typo3-fluid-phpstorm-intellij/ Alle Infos zum Plugin und zu den Lizenzmodellen findet ihr auf der zugehörigen Website.]
==== Namespaces ====
* Ich hatte das Problem, dass PhpStorm die Namespaces nicht zuordnen konnte.
* Auf Dauer ist das schon ärgerlich wenn man nicht eben schnell zur Deklaration einer Klasse springen kann, oder die Autovervollständigung nicht mehr funktioniert.
* Glücklicherweise bin ich nicht der einzige der sich daran stört. Es gibt bereits eine Extension die für PhpStorm per CLI Script ein Metafile erstellt.
* Die Extension nennt sich einfach [https://github.com/irnnr/typo3-ext-phpstorm Phpstorm] und kann über Git geladen werden.
cd typo3conf/ext git clone https://github.com/irnnr/typo3-ext-phpstorm.git mv typo3-ext-phpstorm phpstorm


=== Namespaces ====
cd typo3conf/ext
 
Ich hatte das Problem, dass PhpStorm die Namespaces nicht zuordnen konnte. Auf Dauer ist das schon ärgerlich wenn man nicht eben schnell zur Deklaration einer Klasse springen kann, oder die Autovervollständigung nicht mehr funktioniert. Glücklicherweise bin ich nicht der einzige der sich daran stört. Es gibt bereits eine Extension die für PhpStorm per CLI Script ein Metafile erstellt.
 
Die Extension nennt sich einfach [https://github.com/irnnr/typo3-ext-phpstorm Phpstorm] und kann über Git geladen werden.
 
cd typo3conf/ext git clone https://github.com/irnnr/typo3-ext-phpstorm.git mv typo3-ext-phpstorm phpstorm
 
cd typo3conf/ext
  git clone [https://github.com/irnnr/typo3-ext-phpstorm.git https://github.com/irnnr/typo3-ext-phpstorm.git]
  git clone [https://github.com/irnnr/typo3-ext-phpstorm.git https://github.com/irnnr/typo3-ext-phpstorm.git]
  mv typo3-ext-phpstorm phpstorm
  mv typo3-ext-phpstorm phpstorm


Falls noch nicht geschehen muss ein BE-User, mit dem Namen „''_cli_phpstorm''“&nbsp;erstellt werden.
* Falls noch nicht geschehen muss ein BE-User, mit dem Namen „''_cli_phpstorm''“ erstellt werden.
 
* Nach der Installation der Extension führt man im Root Verzeichnis der TYPO3-Installation über die Konsole folgenden Befehl aus: php typo3/cli_dispatch.phpsh phpstorm_metadata
Nach der Installation der Extension führt man im Root Verzeichnis der TYPO3-Installation über die Konsole folgenden Befehl aus:&nbsp; php typo3/cli_dispatch.phpsh phpstorm_metadata
* Es kann eine ganze Weile dauern bis der Prozess abgeschlossen ist.
 
* Danach findet man im Root der TYPO3-Installation ein File namens „''.phpstorm.meta.php''„.  
Es kann eine ganze Weile dauern bis der Prozess abgeschlossen ist.
* Dieses kopiert man sich nun in seine Working-copy von Phpstorm und startet die IDE einmal neu.  
 
* PhpStorm sollte das neue File nun erkennen und indexieren.
Danach findet man im Root der TYPO3-Installation ein File namens „''.phpstorm.meta.php''„. Dieses kopiert man sich nun in seine Working-copy von Phpstorm und startet die IDE einmal neu. PhpStorm sollte das neue File nun erkennen und indexieren.
* Falls nicht automatisch indexiert wird, kann man unter Files|invalidate caches den Cache einmal löschen und die IDE dann neu starten.  
 
* Spätestens jetzt sollte aber die Indexierung klappen.
Falls nicht automatisch indexiert wird, kann man unter Files|invalidate caches den Cache einmal löschen und die IDE dann neu starten. Spätestens jetzt sollte aber die Indexierung klappen.


== Live-Templates ==
== Live-Templates ==
* Vorlagen für FluidTemplates (Templates/Layouts/Partials) können als Live-Template angelegt werden.
* So kann eine leere HTML-Datei mit zwei bis drei Tastenanschlägen das komplette Gerüst für eine optimierte Fluid-Vorlage erhalten.
* Die Live-Templates werden in den Einstellungen unter Editor->Live Templates angelegt.
* Es muss eine Abkürzung, Beschreibung und der Template-Text definiert werden.
* Wichtig ist, dass ihr auch definiert, in welchen Dateien die Abkürzung funktionieren soll und mit welcher Taste die Abkürzung in den Template-Text umgewandelt werden soll.
* Ich habe mir auch für einen Kommentar im FluidTemplate ein Live-Template erstellt: Mit der Abkürzung '''„FC + Tab“''' benutze ich diesen Template-Text:
* Durch '''$SELECTION$''' kann ich später im Template auch einen Text markieren und mit ''CMD+ALT+J'' bzw. ''CTRL+ALT+J'' mit dem Kommentar umschließen.
* <f:comment> … </f:comment> sorgt dafür, dass im generierten HTML keine Ausgabe gemacht wird. <![CDATA[ … ]]> verhindert, dass im Kommentar enthaltene ViewHelper geparsed werden und damit die Seitengenerierung verzögern.
* Und der HTML-Kommentar <!– … –> sorgt dafür, dass PhpStorm auch den Code ausgraut.
* Bei diesem Live-Template ist es sinnvoll, den Haken bei ''„Reformat according to style“'' zu setzen, damit der Code automatisch eingerückt wird.


Vorlagen für FluidTemplates (Templates/Layouts/Partials) können als Live-Template angelegt werden. So kann eine leere HTML-Datei mit zwei bis drei Tastenanschlägen das komplette Gerüst für eine optimierte Fluid-Vorlage erhalten.
== File-Watcher ==
 
* Mit einem File-Watcher kann PhpStorm die Änderung einer Datei überwachen und dann beispielsweise automatisch aus einer SASS, SCSS oder Less-Datei eine CSS-Datei generieren.  
Die Live-Templates werden in den Einstellungen unter Editor->Live Templates angelegt. Es muss eine Abkürzung, Beschreibung und der Template-Text definiert werden.
* Diese kann dann wiederum automatisch komprimiert werden. Die CSS/JS-Kompression ist sehr einfach einzubinden. Zunächst benötigt ihr den YUI Compressor von der Webseite [https://github.com/yui/yuicompressor/releases https://github.com/yui/yuicompressor/releases].  
 
* Die Datei „yuicompressor-2.4.8.jar“ speichert ihr lokal ab. Dann müsst ihr unter '''Einstellungen->Tools->File Watchers''' den File-Watcher „YUI Compressor JS“ und/oder „YUI Compressor CSS“ mit einem Klick auf das Plus-Icon hinzufügen.
Wichtig ist, dass ihr auch definiert, in welchen Dateien die Abkürzung funktionieren soll und mit welcher Taste die Abkürzung in den Template-Text umgewandelt werden soll.
 
Ich habe mir auch für einen Kommentar im FluidTemplate ein Live-Template erstellt: Mit der Abkürzung '''„FC + Tab“''' benutze ich diesen Template-Text:
 
Durch '''$SELECTION$''' kann ich später im Template auch einen Text markieren und mit ''CMD+ALT+J'' bzw. ''CTRL+ALT+J'' mit dem Kommentar umschließen. <f:comment> … </f:comment> sorgt dafür, dass im generierten HTML keine Ausgabe gemacht wird. <![CDATA[ … ]]> verhindert, dass im Kommentar enthaltene ViewHelper geparsed werden und damit die Seitengenerierung verzögern. Und der HTML-Kommentar <!– … –> sorgt dafür, dass PhpStorm auch den Code ausgraut.
 
Bei diesem Live-Template ist es sinnvoll, den Haken bei ''„Reformat according to style“'' zu setzen, damit der Code automatisch eingerückt wird.
 
File-Watcher ==
 
Mit einem File-Watcher kann PhpStorm die Änderung einer Datei überwachen und dann beispielsweise automatisch aus einer SASS, SCSS oder Less-Datei eine CSS-Datei generieren.  
 
Diese kann dann wiederum automatisch komprimiert werden. Die CSS/JS-Kompression ist sehr einfach einzubinden. Zunächst benötigt ihr den YUI Compressor von der Webseite [https://github.com/yui/yuicompressor/releases https://github.com/yui/yuicompressor/releases].  
 
Die Datei „yuicompressor-2.4.8.jar“ speichert ihr lokal ab. Dann müsst ihr unter '''Einstellungen->Tools->File Watchers''' den File-Watcher „YUI Compressor JS“ und/oder „YUI Compressor CSS“ mit einem Klick auf das Plus-Icon hinzufügen.


[[Image:Bild3.png|top|alt="Screenshot file-watcher"]]
[[Image:Bild3.png|top|alt="Screenshot file-watcher"]]


Damit die Dateien inklusiv der minimierten Version automatisch hochgeladen werden, muss unter '''„Build, Execution, Deployment“ -> Deployment -> Options -> „Upload external changes“''' noch der Haken gesetzt werden.  
* Damit die Dateien inklusiv der minimierten Version automatisch hochgeladen werden, muss unter '''„Build, Execution, Deployment“ -> Deployment -> Options -> „Upload external changes“''' noch der Haken gesetzt werden.  
 
Aber Vorsicht:  
Aber Vorsicht: Sollten lokal Dateien gelöscht werden (auch wenn dies im Finder/Explorer geschieht), dann werden auch die entfernten Dateien gelöscht. Ich persönlich lasse diese Checkbox lieber ohne Haken und lade beim Veröffentlichen auf dem Live-System die minimierten Dateien manuell hoch.
Sollten lokal Dateien gelöscht werden (auch wenn dies im Finder/Explorer geschieht), dann werden auch die entfernten Dateien gelöscht.  
Ich persönlich lasse diese Checkbox lieber ohne Haken und lade beim Veröffentlichen auf dem Live-System die minimierten Dateien manuell hoch.


== Emmet ==
== Emmet ==
* Mit Emmet kannst du HTML- oder CSS-Code viel schneller eingegeben. Wenn du beispielsweise im HTML-Template die Zeile mit einem Tab bestätigst, generiert PhpStorm darauf folgenden HTML-Code:
* Zur Erklärung: div.container erzeugt den alles umschließenden DIV-Container mit der CSS-Klasse „container“.
* Mit '''>''' wird ein untergeordnetes Tag eingefügt.
* Die runden Klammern gruppieren den Header, damit mit dem '''+div.row''' ein DIV mit der CSS-Klasse „row“ parallel zum Header erzeugt werden kann.
* Im Header wird das Dollar-Zeichen für einen Zähler verwendet.
* Mit den geschweiften Klammern kann ein Text eingefügt werden.
* Mit '''>div.col-sm-4*3''' werden unter dem DIV mit der Klasse „row“ drei mal ein DIV mit der Klasse „col-sm-4“ angelegt.
* Mit '''>lorem''' wird der Lorem Ipsum Blindtext eingefügt


Mit Emmet kannst du HTML- oder CSS-Code viel schneller eingegeben. Wenn du beispielsweise im HTML-Template die Zeile
[[Kategorie:Typo3]]
 
mit einem Tab bestätigst, generiert PhpStorm darauf folgenden HTML-Code:
 
Zur Erklärung: div.container erzeugt den alles umschließenden DIV-Container mit der CSS-Klasse „container“.
 
Mit '''>''' wird ein untergeordnetes Tag eingefügt. Die runden Klammern gruppieren den Header, damit mit dem '''+div.row''' ein DIV mit der CSS-Klasse „row“ parallel zum Header erzeugt werden kann. Im Header wird das Dollar-Zeichen für einen Zähler verwendet.
 
Mit den geschweiften Klammern kann ein Text eingefügt werden.
 
Mit '''>div.col-sm-4*3''' werden unter dem DIV mit der Klasse „row“ drei mal ein DIV mit der Klasse „col-sm-4“ angelegt.
 
Mit '''>lorem''' wird der Lorem Ipsum Blindtext eingefügt

Aktuelle Version vom 29. März 2023, 12:12 Uhr

PhpStorm

  • Software für alles, dass Web Development zu tun hat
  • PhpStorm ist kein einfacher Texteditor, sondern eine Entwicklungsumgebung, die PHP, SQL, CSS, SASS, Less, JavaScript und vieles mehr „versteht“.
  • So erkennt diese Entwicklungsumgebung die Zusammenhänge zwischen den einzelnen Dateien.
  • Über Plugins kann die Funktionalität noch erweitert werden.
    • „TypoScript Plugin“ und „Fluid Plugin“ von Sgalinski Internet Services
    • Neben einem kostenlosen Plugin gibt es auch kostenpflichtige Versionen mit erweiterten Funktionen.
  • Falls das TypoScript-Plugin von Jetbrains angezeigt wird, sollte dieses deinstallieren werden!
  • PhpStorm zeigt mit den installierten Plugins Syntax-Fehler an, so werden Fehler schneller gefunden und behoben

Settings

While these seem minor at first sight, they ease the work on our QA department and help big time to not let the core decay over time in regards to Code quality and consistency.

Code Style

  • TYPO3 uses PSR-2 as Coding Style for PHP.

To set that in PHPStorm: # Open Settings (or Default Settings, if you want to set this for all projects)

  1. Go to Editor -> Code Style -> PHP
  2. Click on "Set from..." (Looks like a link on the top right of the settings window)
  3. Choose "Predefined Style > PSR1/2"

Autocomplete

Factory methods (makeInstance, ObjectManager->get)

  • The TYPO3 core comes with a configuration file for the dynamic return type plugin that gives you autocomplete for factory methods like GeneralUtility::makeInstance and ObjectManager->get.
  • To install the plugin in PHPStorm follow these steps:
  1. Open Settings
  2. Go to plugins
  3. Click the "Browse repositories" button
  4. Enter "dynamicReturnTypePlugin" in the search box
  5. Install the plugin
  6. The configuration will be loaded automatically

FYI: The configuration file: https://git.typo3.org/Packages/TYPO3.CMS.git/blob/HEAD:/dynamicReturnTypeMeta.json (If your TYPO3 version does not have this file you can download it and just add it to your project.) https://git.typo3.org/Packages/TYPO3.CMS.git/blob/HEAD:/dynamicReturnTypeMeta.json

  1 {
  2         // configuration file for PHPStorm Plugin: http://plugins.jetbrains.com/plugin/7251
  3         "methodCalls": [
  4                 {
  5                         "class": "\\TYPO3\\CMS\\Core\\Utility\\GeneralUtility",
  6                         "method": "makeInstance",
  7                         "position": 0
  8                 },
  9                 {
 10                         "class": "\\TYPO3\\CMS\\Extbase\\Object\\ObjectManagerInterface",
 11                         "method": "get",
 12                         "position": 0
 13                 },
 14                 {
 15                         "class": "\\PHPUnit\\Framework\\TestCase",
 16                         "method": "prophesize",
 17                         "position": 0,
 18                         "mask": "%s|\\Prophecy\\Prophecy\\ObjectProphecy"
 19                 },
 20                 {
 21                         "class": "\\PHPUnit\\Framework\\TestCase",
 22                         "method": "createMock",
 23                         "position": 0,
 24                         "mask": "%s|\\PHPUnit_Framework_MockObject_MockObject"
 25                 },
 26                 {
 27                         "class": "\\TYPO3\\TestingFramework\\Core\\BaseTestCase",
 28                         "method": "getAccessibleMock",
 29                         "position": 0,
 30                         "mask": "%s|\\PHPUnit_Framework_MockObject_MockObject|\\TYPO3\\TestingFramework\\Core\\AccessibleObjectInterface"
 31                 },
 32                 {
 33                         "class": "\\TYPO3\\TestingFramework\\Core\\BaseTestCase",
 34                         "method": "getAccessibleMockForAbstractClass",
 35                         "position": 0,
 36                         "mask": "%s|\\PHPUnit_Framework_MockObject_MockObject|\\TYPO3\\TestingFramework\\Core\\AccessibleObjectInterface"
 37                 }
 38         ],
 39         "functionCalls": [
 40         ]
 41 }

Plugins

  • Mit den TypoScript-Plugin beherrscht PhpStorm Syntax Highlighting / Code Folding über mehrere Dateien hinweg, da Objekte und Variablen erkannt werden.
  • Mit Strg + Q (Ctrl + J unter OSX) kann du direkt die Dokumentation öffnen.
  • Du kannst einen Strukturbaum und einen Brotkrumenpfad für eine schnellere Navigation nutzen.
  • Bei Fehlern bekommst du direkt einen Hinweis.
  • Und bei Verwendung von <INCLUDE_TYPOSCRIPT: source=“FILE:pfad/zur/datei.t3s“ /> kann die Datei direkt mit Strg+Klick geöffnet werden.

"Screen phpStorm"

  • Auch das Fluid-Plugin hilft dir schneller zu arbeiten.
  • Es bietet dir wie auch schon das TypoScript-Plugin Auto-Vervollständigung, Quick-Dokumentation, Strg+Klick zum Anspringen von den Definitionen in anderen Dateien, Syntax Highlighting und Brace Matching für Inline-ViewHelper und Fehler-Hervorhebung.
  • Mehr dazu auf der Webseite des Plugin-Entwicklers: https://www.sgalinski.de/typo3-produkte-webentwicklung/

TypoScript

  • PhpStorm ist eine Integrierte Entwicklungsumgebung (IDE) der Firma JetBrains für die Scriptsprache PHP und andere Webtechnologien und erfreut sich in der TYPO3 Community wachsender Beliebtheit.
  • Neben den vielen Features von PhpStorm dürfte auch die Tatsache sein, dass der Hersteller an Open Source Entwickler eine kostenloseOpen Source License vergibt, in deren Genuss viele TYPO3 Core Developer gekommen sind.
  • Die IDE ist sowohl für Windows, Mac als auch Linux verfügbar.
  • Es gibt ein Plugin für PhpStorm, dass TypoScript Unterstützung nachrüstet.
  • Für den Anfang sind das Syntax Highlighting, Code Folding und die Quick Navigation.
  • Soweit ich das bisher testen konnte, funktioniert das Plugin nur mit dem heute erschienenen 4.0.1 RC, nicht aber mit Version 3.0.3 und älter.
  • Die Installation geht in wenigen Schritten über File => Settings => Plugins =>Browse Repositories und dann nach TypoScript suchen.
  • Am Mac kommt man über PhpStorm => Preferences => Plugins => Browse Repositories zum selben Ergebnis.
  • Ein großes Dankeschön geht an Alexey Gopachenko und Elena Shaverdova von JetBrains, die diese erste Version entwickelt und kostenlos zur Verfügung gestellt haben.
  • Für die Zukunft ist geplant, das Plugin unter eine Open Source Lizenz zu stellen oder durch die TYPO3 Community weiterentwickeln zu lassen.
  • Bitte testet das Plugin ausführlich und bewertet es bzw. gebt ein Rating ab.
  • Weiteres Feedback und Bugs können im Issue im JetBrains Bugtracker eingetragen werden.
  • Wenn die TYPO3 Community genügend Interesse an dem Plugin zeigt, wird JetBrains bestimmt gerne weitere Verbesserungen vornehmen!
  • Update: Danke an Kabarakh für den Hinweis: wenn man unter Settings => File Types => Recognized File Types => TypoScript noch *.ts einfügt, funktiniert das Plugin auch mit alten Versionen von PhpStorm!
  • Update 2: Laut Jigal van Hemert kann man die Registered Patterns auch wie folgt erweitern:

*.ts setup.txt constants.txt ext_conf_template.txt ext_typoscript_setup.txt ext_typoscript_constants.txt* *.ts

  • setup.txt
  • constants.txt
  • ext_conf_template.txt
  • ext_typoscript_setup.txt
  • ext_typoscript_constants.txt

Fluid

  • Wahrscheinlich kennt jeder, der mit TYPO3 und PHPStorm arbeitet, bereits das TypoScript-Plugin der Agentur sgalinski Internet Services.
  • Und falls nicht -> ist eine absolute Pflichtanschaffung und erleichtert die Arbeit mit TypoScript in PHPStorm (und Derivaten) enorm.
  • Aus dem gleichen Hause ist seit einer Weile auch ein Fluid-Plugin zu haben, das die Arbeit mit Fluidtemplates unglaublich erleichtert.

Einige der Features sind

  • Autovervollständigung: das Plugin analysiert Fluid-Code im gesamten Projekt und ist so in der Lage hilfreiche Vorschläge in der Autovervollständigung anzubieten.
  • Quick-Dokumentation: Mit der Tastenkombination Strg + Q (Ctrl + J unter OS X) lässt sich jederzeit die Dokumentation zum aktuell ausgewählten Symbol in einem Popup-Fenster anzeigen.
  • Direkt zu den richtigen Dateien springen: Dank des Fluid-Plugins sind die gesuchten Dateien nur noch einen Klick entfernt. Bei der Verwendung von Partials, Layouts, Templates oder Sections, kann mit Strg + Klick direkt an die Stelle gesprungen werden an der diese definiert sind.
  • Syntax Highlighting und Brace Matching für Inline-ViewHelper: Das Fluid-Plugin bietet ein auf die Sprache optimiertes Highlighting und Brace-Matching.
  • Fehlererkennung: Das Fluid-Plugin ist bestens mit den Eigenheiten der Sprache vertraut und erkennt somit Syntax-Fehler auch an Stellen an denen dies mit den IntelliJ Boardmitteln bisher nicht möglich war.
  • Das Plugin wird ständig weiterentwickelt, neue Features sind bereits in Planung. Alle Infos zum Plugin und zu den Lizenzmodellen findet ihr auf der zugehörigen Website.

Namespaces

  • Ich hatte das Problem, dass PhpStorm die Namespaces nicht zuordnen konnte.
  • Auf Dauer ist das schon ärgerlich wenn man nicht eben schnell zur Deklaration einer Klasse springen kann, oder die Autovervollständigung nicht mehr funktioniert.
  • Glücklicherweise bin ich nicht der einzige der sich daran stört. Es gibt bereits eine Extension die für PhpStorm per CLI Script ein Metafile erstellt.
  • Die Extension nennt sich einfach Phpstorm und kann über Git geladen werden.
cd typo3conf/ext git clone https://github.com/irnnr/typo3-ext-phpstorm.git mv typo3-ext-phpstorm phpstorm
cd typo3conf/ext
git clone https://github.com/irnnr/typo3-ext-phpstorm.git
mv typo3-ext-phpstorm phpstorm
  • Falls noch nicht geschehen muss ein BE-User, mit dem Namen „_cli_phpstorm“ erstellt werden.
  • Nach der Installation der Extension führt man im Root Verzeichnis der TYPO3-Installation über die Konsole folgenden Befehl aus: php typo3/cli_dispatch.phpsh phpstorm_metadata
  • Es kann eine ganze Weile dauern bis der Prozess abgeschlossen ist.
  • Danach findet man im Root der TYPO3-Installation ein File namens „.phpstorm.meta.php„.
  • Dieses kopiert man sich nun in seine Working-copy von Phpstorm und startet die IDE einmal neu.
  • PhpStorm sollte das neue File nun erkennen und indexieren.
  • Falls nicht automatisch indexiert wird, kann man unter Files|invalidate caches den Cache einmal löschen und die IDE dann neu starten.
  • Spätestens jetzt sollte aber die Indexierung klappen.

Live-Templates

  • Vorlagen für FluidTemplates (Templates/Layouts/Partials) können als Live-Template angelegt werden.
  • So kann eine leere HTML-Datei mit zwei bis drei Tastenanschlägen das komplette Gerüst für eine optimierte Fluid-Vorlage erhalten.
  • Die Live-Templates werden in den Einstellungen unter Editor->Live Templates angelegt.
  • Es muss eine Abkürzung, Beschreibung und der Template-Text definiert werden.
  • Wichtig ist, dass ihr auch definiert, in welchen Dateien die Abkürzung funktionieren soll und mit welcher Taste die Abkürzung in den Template-Text umgewandelt werden soll.
  • Ich habe mir auch für einen Kommentar im FluidTemplate ein Live-Template erstellt: Mit der Abkürzung „FC + Tab“ benutze ich diesen Template-Text:
  • Durch $SELECTION$ kann ich später im Template auch einen Text markieren und mit CMD+ALT+J bzw. CTRL+ALT+J mit dem Kommentar umschließen.
  • <f:comment> … </f:comment> sorgt dafür, dass im generierten HTML keine Ausgabe gemacht wird. <![CDATA[ … ]]> verhindert, dass im Kommentar enthaltene ViewHelper geparsed werden und damit die Seitengenerierung verzögern.
  • Und der HTML-Kommentar <!– … –> sorgt dafür, dass PhpStorm auch den Code ausgraut.
  • Bei diesem Live-Template ist es sinnvoll, den Haken bei „Reformat according to style“ zu setzen, damit der Code automatisch eingerückt wird.

File-Watcher

  • Mit einem File-Watcher kann PhpStorm die Änderung einer Datei überwachen und dann beispielsweise automatisch aus einer SASS, SCSS oder Less-Datei eine CSS-Datei generieren.
  • Diese kann dann wiederum automatisch komprimiert werden. Die CSS/JS-Kompression ist sehr einfach einzubinden. Zunächst benötigt ihr den YUI Compressor von der Webseite https://github.com/yui/yuicompressor/releases.
  • Die Datei „yuicompressor-2.4.8.jar“ speichert ihr lokal ab. Dann müsst ihr unter Einstellungen->Tools->File Watchers den File-Watcher „YUI Compressor JS“ und/oder „YUI Compressor CSS“ mit einem Klick auf das Plus-Icon hinzufügen.

"Screenshot file-watcher"

  • Damit die Dateien inklusiv der minimierten Version automatisch hochgeladen werden, muss unter „Build, Execution, Deployment“ -> Deployment -> Options -> „Upload external changes“ noch der Haken gesetzt werden.
Aber Vorsicht: 
Sollten lokal Dateien gelöscht werden (auch wenn dies im Finder/Explorer geschieht), dann werden auch die entfernten Dateien gelöscht. 
Ich persönlich lasse diese Checkbox lieber ohne Haken und lade beim Veröffentlichen auf dem Live-System die minimierten Dateien manuell hoch.

Emmet

  • Mit Emmet kannst du HTML- oder CSS-Code viel schneller eingegeben. Wenn du beispielsweise im HTML-Template die Zeile mit einem Tab bestätigst, generiert PhpStorm darauf folgenden HTML-Code:
  • Zur Erklärung: div.container erzeugt den alles umschließenden DIV-Container mit der CSS-Klasse „container“.
  • Mit > wird ein untergeordnetes Tag eingefügt.
  • Die runden Klammern gruppieren den Header, damit mit dem +div.row ein DIV mit der CSS-Klasse „row“ parallel zum Header erzeugt werden kann.
  • Im Header wird das Dollar-Zeichen für einen Zähler verwendet.
  • Mit den geschweiften Klammern kann ein Text eingefügt werden.
  • Mit >div.col-sm-4*3 werden unter dem DIV mit der Klasse „row“ drei mal ein DIV mit der Klasse „col-sm-4“ angelegt.
  • Mit >lorem wird der Lorem Ipsum Blindtext eingefügt