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
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
- Offizielle Plugin Development Seite
- Bietet Beispiele zu Extension Points
- Forum: Open Api Dokumentation
Plugin Beispiele
Im Detail alles zu beschreiben wäre etwas viel, hier ein paar Plugin zum "Abgucken"