Schneller Magento entwickeln
In erster Linie besticht PhpStorm durch seine enorme Geschwindigkeit. Sowohl das Hochfahren der IDE als auch das Indizieren eines Projektes sind schnell erledigt. Das gilt auch bei größeren Projekten, zu denen Magento-Projekte ja zweifelsohne zählen. Je mehr Dateien und Quellcode-Zeilen die Entwicklungsumgebung im Hinblick auf die Autovervollständigung verarbeiten muss, desto langsamer wird der Editor. Dies scheint für PhpStorm aber nicht zu gelten: Die Code-Autovervollständig kommt immer nahezu in Echtzeit. PhpStorm versucht auch intelligent die gefundenen Ergebnisse nach Relevanz und Bedarf des Entwicklers zu sortieren, nicht einfach nur alphabetisch.
Neben der Geschwindigkeit der IDE selbst bietet sie eine Reihe von Shortcuts und Tools, um schneller entwickeln zu können. Die wohl größte Beschleunigung erlebt ein Nutzer wohl, wenn er sich die Nutzung der Maus abgewöhnt. Hier unterstützt PhpStorm durch enorm viele Tastaturkürzel, die in der PhpStorm Default Keymap aufgeführt sind. Diese ist auch in der IDE im Hilfebereich zugreifbar. Darüber hinaus lohnt es sich auch, die Tips of the Day zu studieren, die nach der Installation automatisch erscheinen oder über das Help-Menü erreichbar sind:
Und Action …
Über das Tastaturkürzel Strg + Umschalt + A lassen sich beliebige PhpStorm-Actions aus dem Menü oder sogar darüber hinaus direkt aufrufen:
Die Suche nach der Klasse
Wer schnell in eine Klasse springen möchte, deren Namen er kennt oder teilweise kennt, kann mit Strg + N diese schnell über ihren Namen finden. Dabei reicht schon die Angabe der Anfangsbuchstaben der CamelCase-Schreibweise:
Ablage V
PhpStorm bringt direkt eine multiple Zwischenablage mit, in der man beliebig viele (Standard-Einstellung: 5) Texte zwischenspeichern kann. Mit Strg + Umschalt + V öffnet sich die entsprechende Toolbox, die sich bequem per Tastatur bedienen lässt:
Wo war ich noch gleich ...
Wer sich auf der Suche nach einer Information im Magento-Kern durch zig Klassen durcharbeitet, sucht zwangsläufig wohl hinterher den Ort, wo er zuletzt Quellcode verändert hat. Mit dem Tastaturkürzel Strg + Umschalt + Backspace springt man automatisch zu dieser Stelle zurück.
Besser Magento entwickeln
Natürlich kommt es nicht nur auf Geschwindigkeit beim Coding an, sondern vor allem auf Qualität. Auch hier bietet PhpStorm einige interessante Shortcuts und Refactoring-Tools an, die dabei helfen, Fehler zu vermeiden.
Ihr heißt jetzt alle anders
Das Umbenennen einer Variablen, Methode oder Konstanten ist sehr fehleranfällig, wenn diese bereits vielfach in Gebrauch sind. Schnell rutscht einem ein Exemplar durch und man erhält einen schwer zu findenden Fehler. PhpStorm und Umschalt + F6 helfen einem hier, indem alle Vorkommen im entsprechenden Scope (z.B. einer Methode) konsistent geändert werden. Ändert man eine Klassen-Variable, bietet PhpStorm sogar die konsistente Änderung von Getter- und Setter-Methoden an.
Tausend und eine Variable / Methode / Konstante
Beim Refactoring gliedert man nicht selten Ausdrücke in neue Variablen oder Methoden aus. Um aus bestehendem Code Variablen, Methoden oder Konstanten anzufertigen, bietet PhpStorm mit den Shortcuts Strg + Umschalt + V (Variablen), Strg + Umschalt + M (Methoden) bzw. Strg + Umschalt + C (Konstanten) Refactorings an, die vollständig und korrekt arbeiten. Bei Methoden werden alle Abhängigkeiten über einen Dialog erkannt und aufgelöst:
Achtung! Befehl zum Einrücken!
Hat sich die Einrückung in Teilen des Codes verabschiedet oder der Autor hat hier mal „ein Auge zugedrückt“, kann man die Code-Passage einfach markieren und mit Strg + Alt + I durch PhpStorm einrücken lassen.
Noch schneller und besser mit Magicento
Enrique Piatti ist vor einiger Zeit auf die glorreiche Idee gekommen, ein Plugin namens Magicento für PhpStorm zu entwickeln, das die speziellen Anforderungen von Magento an eine IDE noch präziser abdeckt. Drückt man im Code-Editor Alt + M, öffnet sich das Magicento-Kontextmenü mit einigen hilfreichen Funktionalitäten.
Beispielsweise hilft das Tool beim Kopieren eines Templates in ein anderes Theme, wenn dies überlagert werden soll:
Und auch die Autovervollständigung bei Klassennamen wird durch Magicento entsprechend der Konvention (Verzeichnispfad + Dateiname) ermöglicht:
Die Autovervollständigung funktioniert mit Magicento auch bei Objekten, die aus entsprechenden Factory-Methoden stammen:
Diese und weitere Features listet das Magicento-Plugin auf seiner Feature-Seite, wo auch die wöchentlich durch das Plugin eingesparte Zeit geschätzt wird.
Das Tool ist kostenlos, aber eine Spende zwischen $15 und $50 wird erbeten und ist nur fair, bei dem daraus entstehenden Produktivitätsgewinn.
Tool-Integration
PhpStorm integriert die verschiedensten Tools direkt in die Entwicklungsumgebung. Angefangen bei FTP- und Datenbank-Server über Versionsverwaltungssysteme (VCS, z.B. Git, Subversion), einen REST-Client, eine SSH-Konsole bis hin zu Vagrant und Composer.
Bei uns in der Firma ist unter anderem die Integration unseres Ticket-Systems (Redmine) in Kombination mit den Changelists interessant. So lassen sich beispielsweise JIRA, Redmine, Trac, Mantis oder Github über Tools > Tasks & Contexts einbinden.
Die Auswahl eines Tasks / Tickets erfolgt über das Menü oder schneller über Alt + Umschalt + N, woraufhin sich folgendes Auswahlfenster öffnet:
Für jedes angefangene Ticket kann PhpStorm eine eigene Changelist und einen eigenen Entwicklungskontext führen. Das hat zur Folge, dass man schnell zwischen den Aufgaben hin und her springen kann: PhpStorm öffnet automatisch die Dateien in den Editor, die mit der Aufgabe in Verbindung stehen.
Außerdem kann automatisch ein Branch in der Versionsverwaltung erstellt werden. Der Entwickler braucht also nur noch die Aufgabe auswählen und ist sofort startklar.
Werden Änderungen in die Versionsverwaltung eingecheckt, füllt PhpStorm automatisch den Commit-Kommentar aus. Die Vorlage hierfür lässt sich im konfigurierten Server des Ticketsystems in PhpStorm vorgeben. So kann beispielsweise der Commit automatisch per refs. #3646 mit dem Ticket verknüpft werden. Also auch hier eine angenehme Unterstützung.
Debugging
Wie könnte man nur effizient programmieren ohne Debugging? Die Fähigkeiten von IDEs bzgl. des Debuggings sind wohl weitläufig bekannt.
Ich habe erst kürzlich entdeckt, dass man die einzelnen Breakpoints in PhpStorm auch noch konfigurieren kann. So kann man beispielsweise festlegen, dass der Breakpoint nur dann greift, wenn eine bestimmte Bedingung erfüllt ist (Condition). Dies ist besonders praktisch bei Schleifen oder zentralen, häufig aufgerufenen Methoden, bei denen nur ein ganz spezieller Durchlauf untersucht werden möchte.
Im obigen Beispiel wird beim Breakpoint nur dann gestoppt, wenn das Produkt in der Methode die ID 15 besitzt. Darüber hinaus ist der Breakpoint zunächst deaktiviert, bis ein anderer Breakpoint in der Datei Observer.php (Zeile 17) durchlaufen wurde. Damit lassen sich bestimmte Abhängigkeiten besser beleuchten: „Halte hier im Code nur an, wenn du vorher an Stelle XY vorbeigekommen bist.“
Besonderes Augenmerk ist dabei auf den Schalter Suspend zu legen, mit dem ein Anhalten im Code verhindert werden kann. Es ist möglicherweise sinnvoll, diesen Haken in Observer.php zu entfernen, da dieser nur als stille Markierung dient.
Fazit
PhpStorm begeistert durch Geschwindigkeit und wirklich nützliche Tools, die bis ins Detail ausgeklügelt wurden. Die Entwicklung von großen PHP-Projekten wie Magento war noch nie so komfortabel wie heute mit dieser IDE in Kombination mit Magicento und den weiteren Tools der eigenen Wahl, die zumeist nativ in PhpStorm integriert sind. Wem das nicht reicht, der greift auf die zahlreichen Plugins zurück oder schreibt sich gleich selbst eins in Java. Dafür bietet JetBrains seine IntelliJ IDEA an, aber das ist eine andere Geschichte ...