Wissenwertes über die IntelliJ IDEA / PhpStorm Plugin Entwicklung

So, 22.09.2013 - 17:07 -- Daniel Espendiller

PhpStorm IntelliJ PsiViewer Ab PhpStorm 6 stellt JetBrains mit einer Open Api endlich einige Schnittstellen auch für PHP bereit. Leider findet sich kaum eine Dokumentation oder ein Beispiel wie man diese denn anspricht. Der Einstieg in die Plugin Entwicklung ist also anfangs ziemlich komplex. Ich fasse hier dennoch mal einige hilfreichen Informationen zusammen.

Einrichtung: Entwicklungsumgebung

Zur Plugin Entwicklung reicht die kostenlose IntelliJ IDEA Community Edition, diese bietet die Möglichkeit ein Projekt vom Typ "Plugin" anzulegen. Hier ist zum größten Teil schon alles vorkonfiguriert. Für PHP und andere Plugin sollte man jedoch, wenn benötigt, noch die Libraries direkt aus PhpStorm einbinden, siehe Screenshot. In der plugin.xml, dann auch noch eine depends auf com.jetbrains.php setzen.

PsiViewer

PhpStorm IntelliJ PsiViewer Alle Elemente in einer Datei werden anhand ihres Typs in PSI-Element eingeordnet und später als Baumstruktur aufbereitet, am einfachsten nutzt man das Plugin PsiViewer um zu verstehen was da genau intern passiert. JetBrains nutzt hier keinen externen PHP-Interpreter, um den "Code zu verstehen". Es wird quasi ein PHP-Interpreter in Java implementiert, dadurch ist die IDE wesentlich schneller.
Das hat natürlich den Nachteil, dass das man z.B. nicht direkt weißt was zum Beispiel hinter einer Variable steckt, es muss die ganze Baumstruktur analysiert werden.

JD-GUI: Java Decompiler

Da JetBrains leider kaum Code-Beispiele anbietet, kann man die jar Dateien hinter den Plugins auch durch einen Java Decompiler: JD-GUI jagen. Für PhpStorm bietet sich die JAR-Datei plugins/php/lib/php.jar an, hier findet die ganze Logik statt.

Links

Plugin Beispiele

Im Detail alles zu beschreiben wäre etwas viel, hier ein paar Plugin zum "Abgucken"

Disqus - noscript

Hi,
wie deployst/testest/debuggst du PHPStorm Plugins? Ich deploy diese immer über das Zip-File und starte danach PHPStorm neu, doch das ist etwas umständlich?

stimmt. wenn du wie in seite 71 (http://de.slideshare.net/Haehn... das projekt einrichtest kannste die debug funktion nehmen und mit breakpoints arbeiten.