Effizientere PHP Entwicklung mit Studio

Richtiger Umgang mit wichtigen Funktionen

Projektarbeit Nr.: 1

vorgelegt am: 07.10.2010

von:

Matrikelnummer:

Berufsakademie: Berufsakademie Gera Weg der Freundschaft 4a 07546 Gera

Studienbereich: Technik

Studiengang: Praktische Informatik

Kurs:

Ausbildungsstätte: dotSource GmbH Leutragraben 1 07743 Jena

Betreuer: Christian Otto Grötsch MBE

Inhaltsverzeichnis

Inhaltsverzeichnis ...... ii Abbildungsverzeichnis ...... iv Abkürzungsverzeichnis ...... v 1 Einleitung...... 6 1.1 Integrierte Entwicklungsumgebungen, eine oft verkannte Unterstützung .... 6 1.2 Zielsetzung der Arbeit ...... 7 2 Entwicklungsumgebungen und deren wachsende Relevanz ...... 8 2.1 Aufbau und Verwendung ...... 8 2.2 Evolutionsstufen ...... 8 2.3 Aktueller Stand für PHP ...... 9 2.4 Zend Studio - Kurzübersicht ...... 10 3 Arbeiten mit dem Zend Studio ...... 11 3.1 Aufbau des Programms ...... 11 3.2 Funktionserweiterung mithilfe des Plugin Systems ...... 12 3.3 Projekt anlegen und Workspace Einstellungen treffen ...... 13 3.4 Anwendung von Standardfunktionen ...... 14 3.5 Dokumentationen anfertigen mit PHPDocumentor ...... 15 3.6 Formatierungen einhalten mit PHP CodeSniffer ...... 19 3.7 Teamarbeit mittels Subversion ...... 21 3.8 Integration von Subclipse in Zend Studio...... 22 3.9 Repository aktivieren und auschecken ...... 22 3.10 Prozedur des SVN Merge-, Update-, und Eincheckvorgangs ...... 23 3.11 Zend Debugger ...... 25 3.12 Installation und Konfiguration des Debuggers ...... 26 3.13 Verwendung des Debuggers ...... 27 3.14 Abschließende Worte zu Erweiterungen ...... 30 4 Fazit ...... 31 Anlagenverzeichnis ...... 32 Anlage A: Plugin Downloadlinks ...... 33

II

Anlage B: Wichtige Shortcuts ...... 34 Anlage : Wichtige PHPDocumentor Tags ...... 36 Literaturverzeichnis ...... 37 Glossar ...... 38 Ehrenwörtliche Erklärung ...... 41

III

Abbildungsverzeichnis

Abbildung 1 PHP IDE Vergleich. Mit Änderungen entnommen aus: [Goo09] ...... 10 Abbildung 2 Perspective mit drei Views ...... 12 Abbildung 3 Content Assist ...... 15 Abbildung 4 PHPDocumentor Methoden-Tag ...... 17 Abbildung 5 PHPDocumentor Methoden-Tag ...... 18 Abbildung 6 PHP CodeSniffer - Einstellungen ...... 20 Abbildung 7 PHP CodeSniffer - Editorintegration von Fehlern ...... 21 Abbildung 8 Team-Synchronisation mit SVN-Dateivergleich ...... 24 Abbildung 9 Firefox mit Zend Toolbar ...... 26 Abbildung 10 ZendDebugger – Profiler ...... 28 Abbildung 11 Debug Perspective ...... 29

IV

Abkürzungsverzeichnis CSS Cascading Style Sheets HTML Hypertext Markup Language IDE Integrated Software Environment JS JavaScript PDT PHP Development Tool PHP Hypertext Preprocessor SEU Softwareentwicklungsumgebung SVN Subversion UML Unified Modeling Language

V

1 Einleitung

Einige der wichtigsten Ziele bei der Programmierung von Software sind es, diese fehlerfrei, schnell und sauber, d.h. gut strukturiert und leserlich, zu entwickeln. Je größer ein Projekt, je mehr Entwickler daran beteiligt oder auch je weniger Zeit dafür eingeplant ist, desto stärker wird die Nachfrage nach effizienten Hilfen bei der Entwicklung.

1.1 Integrierte Entwicklungsumgebungen, eine oft verkannte Unterstützung

„Eine sehr nahe liegende Idee ist hier, die entwickelten Methoden selbst wieder als Software zu realisieren, d.h. spezielle Programme, sogenannte (Soft-) Werkzeuge zu entwickeln, die den Softwareentwickler bei seiner Arbeit unterstützen.“1 Dieser Gedanke führte zur Entwicklung sogenannter integrated software environments (IDE), welche dem Entwickler die von ihm oft verwendeten oder auch dringend benötigten Funktionen in einer einheitlichen Schnittstelle zur Verfügung stellen. Die Verbreitung solcher Programme ist im Laufe der Jahre stark gewachsen, woraufhin sich viele Referenzprodukte für die jeweiligen Sprachen herausgebildet haben. Eines dieser Produkte ist das Zend Studio für die Scriptsprache Hypertext Preprocessor (PHP).

Jedoch wird häufig die Mächtigkeit solch eines Werkzeugs von Entwicklern unterschätzt, bzw. sieht man nicht die Notwendigkeit sich in die Software einzuarbeiten. Dies kann eine ineffiziente Arbeit mit der unterstützenden Software zur Folge haben.

1 [Eng98], S. 7

6

1.2 Zielsetzung der Arbeit

Die dotSource GmbH, in welcher der Autor arbeitet, hat sich auf den Bereich des Social Commerce ausgerichtet. Aufgrund dieser Spezialisierung verwendet sie in der Umsetzung gewünschter Funktionen unter anderem auch die Sprache PHP. Als Firma mit großen Projekten in der Softwareentwicklung ist ihr die effiziente Entwicklung von Software ein wichtiger Faktor, welcher immer wieder einer Leistungssteigerung unterzogen wird.

Die folgende Praxisarbeit wird sich mit dem Zend Studio, einer Entwicklungsumgebung für PHP, befassen. Ziel ist es dem Leser mit dieser Arbeit ein Dokument zu liefern, was ihm in der ersten Hälfte die Bedeutung von IDEs näher bringt und ihm anschließend die Arbeit mit der genannten Entwicklungsumgebung praxisnah darlegt. Dabei werden verschiedene, für die Entwicklung relevante Funktionalitäten und Verfahrenswege erläutert und dokumentiert. Hierbei wird sich diese Arbeit mit einigen wenigen, jedoch sehr wichtigen Funktionen auseinandersetzen. Deren Auftreten wird sich an den Arbeitsprozessen in einem Softwareunternehmen orientieren. Da in dieser Arbeit nur auf ein Teil der Funktionspalette und Zusatzprogramme der IDE eingegangen werden kann, sei der Leser hier bereits bei Bedarf auf weiterführende Lektüre verwiesen.

7

2 Entwicklungsumgebungen und deren wachsende Relevanz

Im ersten Teil der Arbeit soll es theoretischer Art um Softwareentwicklungsumgebungen (SEU) gehen. Es wird konkret auf die Verwendung und die Entwicklung der Programme eingegangen.

2.1 Aufbau und Verwendung

Man kann eine Entwicklungsumgebung im Wesentlichen in die beiden Bereiche Funktionalität und Benutzerschnittstelle gliedern. Die Funktionalität repräsentiert dabei den Umfang der Werkzeuge, welche verwendet werden können. Letzterer stellt die Art und Weise der Anwendung von den Funktionen dar. Die Eingabe kann sich dabei von Kommandozeilen bis zu kontextsensitiven Auswahlboxen erstrecken. Die Ausgabe geschieht heute meist grafisch (z.B. über den Editor). Des Weiteren können Funktionen in einzelnen Bereichen des Bildschirms getrennt dargestellt werden, was einer besseren Übersicht zugute kommt. SEUs enthalten i.d. programmiersprachenabhängige Funktionen. Einige Funktionalitäten, wie z.B. das Syntax Coloring und die Content Assist Funktion, sind jedoch in den meisten Umgebungen enthalten. Sie unterscheiden sich nur durch die sprachabhängige Verwendung in den einzelnen SEUs. Hinzu kommen meist Zusatzfunktionen, die nicht direkt der Entwicklung, sondern der Pflege des Projektes, dienen. Dieses wären z.B. Dokumentationsanfertigungen, welche über die IDE realisiert werden können.

2.2 Evolutionsstufen

Als erste Vorreiter der heutigen SEUs könnten beispielsweise Compiler und Linker genannt werden. Sie stellen dem Nutzer bereits Funktionen in vereinfachter Form

8

bereit. Jedoch ist die Benutzerschnittstelle und die benötigten Kommandos bei der Verwendung unterschiedlicher Programme meist nicht einheitlich. Zusätzlich ist auch der Funktionsumfang bei beispielsweise gleichen Compilern unterschiedlicher Entwickler nicht gleichwertig. Der wachsenden Relevanz einer einheitlichen Verwendung folgten daher Softwareproduktionsumgebungen, welche diese Vereinheitlichung anbieten. Zusätzlich wurden zu dieser Zeit bereits Forschungsprojekte in Leben gerufen, die eine Weiterentwicklung solcher Umgebungen fördern.2 In weiteren Evolutionsstufen wurde dann zumeist der Funktionsumfang erweitert, sodass die Entwicklungsumgebung eine größere Bandbreite an unterstützenden Arbeiten anbietet. Heute sind die SEUs in der Bedienung ausgereift und stellen die wichtigsten Funktionen integriert in ihrem Funktionskern zur Verfügung, teilweise sogar maschinenunabhängig (Zend Studio selbst ist solch eine plattformunabhängige Entwicklungsumgebung).

2.3 Aktueller Stand für PHP

Im PHP Sektor haben sich im Laufe der Jahre einige Programme durchgesetzt. Dabei ist zu beachten, dass PHP i.d.R. mittels eines Interpreters in Form eines Webservers eingesetzt wird. Dies bedeutet, dass nicht die Skriptsprache alleinig, sondern auch Hypertext Markup Language (HTML) und JavaScript (JS) bei der Entwicklung zum Einsatz kommen. Die softwareseitige Entwicklungsunterstützung aller drei Sprachen ist ein nicht zu unterschätzendes Kriterium bei der Platzierung einer IDE. Drei der wichtigsten Vertreter sind unabhängige Weiterentwicklungen der Software : Zend Studio, PHP Development Tool (PDT) und . Des Weiteren weiteren wäre noch NetBeans zu nennen, welches, ebenso wie Eclipse, ursprünglich zur Entwicklung mit verwendet wird. Die nachfolgende Abbildung zeigt einen Auszug der Unterschiede zwischen den einzelnen IDEs. Die Vollständige Liste kann in Anlage G betrachtet werden.

2 [Eng98], S. 112 ff.

9

Abbildung 1 PHP IDE Vergleich. Mit Änderungen entnommen aus: [Goo09]

2.4 Zend Studio - Kurzübersicht

Zend Studio ist eine Weiterentwicklung des PDT Projektes. Im Gegensatz zu diesem ist es kostenpflichtig, bietet jedoch einige Verbesserungen, wie z.B. die Integration des ZendDebuggers. Es ist spezialisiert auf die Entwicklung mit HTML, JS, Cascading Style Sheets (CSS) und vor allem PHP. Es bietet verschiedene, für die eben genannten Sprachen nutzvolle, Funktionen, welche die Effektivität von Softwareentwicklungen erheblich steigern können. Damit dieser Leistungsgewinn jedoch auch nutzbar sein kann, sollten verschiedenste Abläufe, Funktionen und Eigenschaften der Software bekannt und anwendbar sein.

10

3 Arbeiten mit dem Zend Studio

Das nun folgende Kapitel wird sich mit dem Zend Studio in der Praxis beschäftigen. Die dabei genannten Abläufe wurden anhand der Version 7.2 erstellt. Es werden Funktionalitäten in einer praxisrelevanten Reihenfolge erläutert.

3.1 Aufbau des Programms

Das Programm ermöglicht es dem Entwickler seine Funktionen mittels sogenannten Perspectives und Views strukturell zu trennen. Ersteres, die Views, dienen dazu große Funktionsblöcke in eigenen Ansichtseinstellungen zu nutzen. Beispielsweise kann man das Debuglayout völlig von der Entwicklungsansicht getrennt gestalten. Die Views dienen der Anzeige einzelner Funktionen einer Perspective. Diese lassen sich bei Bedarf anzeigen und sind frei im Programm per verschiebbar. Das folgende Bild zeigt die PHP-Perspective mit drei vertikalen Views.

11

Abbildung 2 Perspective mit drei Views

3.2 Funktionserweiterung mithilfe des Plugin Systems

Zend Studio bietet die komfortable Möglichkeit der Erweiterung über Plugins. Die Installation kann dabei auf zwei Arten durchgeführt werden. Zum Einen werden die geladenene Plugindateien in den Installationsordner von Zend Studio händig eingepflegt oder sie werden über den integrierten Installationsmanager geladen. Der Manager kann in der Menüleiste unter Help → Install New Software... aufgerufen werden. Darin wird die URL des Plugins eingegeben und die IDE kümmert sich selbständig um Download und Einrichtung. Es sei noch erwähnt, dass in der Menüleiste unter Help → Check For Updates nach Aktualisierungen der bereits installierten Funktionen geschaut werden kann. Nach der Installation und einem Neustart ist die Erweiterung i.d.R. bereits voll einsatzfähig. Möchte man dennoch Änderungen vornehmen, so ergänzen sich dafür meist neue Einträge unter

12

den Workspace-/ Projekteinstellungen, welche zur Anpassung des Plugins verwendet werden können.

3.3 Projekt anlegen und Workspace Einstellungen treffen

Softwareentwicklungen finden innerhalb eines sogenannten Projektes statt. In solch ein Projekt werden die später folgenden Skripte angezeigt. Zend Studio bietet dazu die Möglichkeit in einem Workspace, sprich einem Ausgangsverzeichnis für abzulegende Daten, ein oder mehrere Projekte anzulegen und über seine Explorer - Perspektive zu verwalten. Dazu wählt man zuerst in der oberen Menüleiste unter File → Switch Workspace → Other ein gewünschtes Verzeichnis aus. Im nächsten Schritt legt man mit einem Klick auf File → New → Project und der Eingabe eines Projekttypen und -namens ein neues Projekt an. Mit dem Typen aktiviert das Programm intern verschiedene Funktionen, wie bspw. Syntax Coloring, auf welche im Kapitel Anwendung von Standardfunktionen noch kurz eingegangen wird. Hier sei vorerst nur gesagt, dass Zend Studio, da es für PHP gedacht, hauptsächlich unter Verwendung von PHP Projekten genutzt wird. Mit diesen zwei Angaben ist Eclipse zum Verwenden seiner Funktionen bereit und kann zum Entwickeln verwendet werden.

Wenn nun der Bedarf an Änderungen des Eclipseverhalten oder -aussehens, welches über das Ausrichten von Views hinaus geht, besteht, so können weitere gewünschte Einstellungen für das Projekt oder den Workspace getroffen werden. Die zugehörigen Einstellungen sind zu finden unter Window → Preferences. In diesem Eigenschaftenfenster lassen sich sämtliche, von Eclipse vorgesehene, Einstellungen ändern. Des Weiteren existieren noch Projekteinstellungen. Zu finden sind diese unter Project → Properties. Die Einstellungen des Projektes sind vererbte des Workspace. Weshalb man sämtliche Einstellungen innerhalb eines Projektes unabhängig vom Workspace konfigurieren kann. Vom Anschalten von

13

Sprachvalidatoren, über das Einstellen von Editorfarben, bis hin zur Änderung von Shortcuts. Für genauere Ausführungen sei hier auf den Zend Studio User Guide im Anhang verwiesen.

3.4 Anwendung von Standardfunktionen

Standardmäßig liefert Zend Studio bereits einige nützliche Funktionen. Einen kurzen Überblick soll dieses Kapitel liefern.

Als Erstes ist das Syntax Coloring erwähnenswert. Es ermöglicht das visuelle Erfassen von Methoden, Strings, Kommentaren und vielem Weiteren. Es wird selbständig beim Öffnen einer Datei mittels PHP Editor – View verwendet.

Des Weiteren erweist sich im Praxisalltag der Content Assist als sehr nützlich. Schreibt man einen Befehl, sei es eine PHP-Funktion, einen Klassennamen oder eine Variable, so kann nach Tippen von einigen Buschstaben des Namens die Tastenkombination Strg + Leertaste gedrückt werden um eine Vervollständigungsliste von möglichen Namen des aktuell geschriebenen Wortes zu öffnen. Die folgende Abbildung stellt ein solches Beispiel dar.

14

Abbildung 3 Content Assist

Hierbei wurde nach PHP Funktionen gesucht, welche mit dem Präfix array_ beginnen. Des Weiteren kann man erkennen, dass rechts neben den Auswahlmöglichkeiten noch der PHPDoc der entsprechenden Methode angezeigt wird. Dazu im nächsten Kapitel: Dokumentationen anfertigen mit PHPDocumentor mehr.

Weitere Funktionen sind beispielsweise das Validieren von HTML Fehlern in einer Datei und dessen visuelle Ausgabe im PHP Editor, sowie das Refacturing von Dateien mit einer globalen Änderung des Klassen-, Methoden- oder Variablennamen. Das ausführliche Behandeln aller Funktionen würde jedoch den Rahmen dieser Arbeit übersteigen, deswegen sei hier auf das Handbuch von Zend Studio, welches unter Anlage D: Zend Studio 7.2 User Guide zu finden ist, verwiesen.

3.5 Dokumentationen anfertigen mit PHPDocumentor

Eine der Wichtigsten Arbeiten eines Entwicklers stellt die Anfertigung von Dokumentationen dar. Diese sind in jeder Entwicklungsphase von hoher Priorität zu versehen, da sie die Wartbarkeit des Codes ungemein erleichtern. Es können je nach Anforderung unterschiedliche Abstraktionsebenen zur Anfertigung verwendet werden. Dazu gehören beispielsweise Syntax-Diagramme oder eben auch die Dokumentation innerhalb des Quelltextes.

15

Vor der eigentlichen Implementierung des Codes befasst man sich mit der Umsetzung, sodass hier bereits vor der Implementierung später auftretende Probleme erkannt und nicht erst in abschließen Tests gefunden und behoben werden müssen. Während des Programmierens helfen gesetzte Kommentare den Code verständlich zu halten. Zu guter Letzt muss man die anfängliche Dokumentation den entsprechenden, in der Umsetzung aufgetretenen Änderungen abermals anpassen und so auf dem aktuellen Stand halten. Zend Studio bietet für jeden dieser Schritte eine Unterstützung.

Für die Dokumentation des Codes bietet es sich an, den in Zend Studio integrierten, PHPDocumentor zu verwenden. Mit diesem Programm lassen sich gewünschte Klassen, deren Methoden und Variablen in einer HTML, PDF oder XML Übersicht generieren. Ein weiterer Vorteil dieses Dokumentationsprogrammes besteht darin, dass zusätzliche Kommentare zur Erläuterung von Klassen, Methoden und Variablen verwendet werden können. Die dafür benötigten Kommentarzeichen sind /** zum Öffnen und */ zum Schließen des Kommentars. Dieser baut sich aus einer Kurz- und Langbeschreibung, sowie sogenannten DocBlock-Tags zusammen. In der folgenden Abbildung wird die Verwendung eines solchen Kommentares gezeigt:

16

Abbildung 4 PHPDocumentor Methoden-Tag

Zuerst wird die Kurzbeschreibung angegeben. Sie wird durch ein Leerzeichen von der Langbeschreibung getrennt. Als Letztes folgen die Tags. Sie werden mit einem @ vorangestellt gestartet und dienen der Nennung von z.B. Parametern, Rückgabewerten oder dem Autor. Wichtige Tags und deren Bedeutung können der Tabelle in Anlage C: Wichtige PHPDocumentor Tags entnommen werden. Hat man nun Klassen fertiggestellt und möchte sie mittels Übersicht zur Verfügung stellen, so reicht ein Klick auf Project → Generate PHPDoc... und Angabe der zu generierenden Dateien. In der folgenden Abbildung ist eine solche HTML Übersicht eines Projektes zu sehen.

17

Abbildung 5 PHPDocumentor Methoden-Tag

In der Praxis stellt sich das ausschließliche dokumentieren von Code als nicht ausreichend dar. Dafür bietet Zend Studio jedoch über sein Plugin System ebenfalls Erweiterungen zur Verfügung, wie z.B. zur Modellierung des Projektes mit der Unified Modeling Language (UML) über AmaterasUML oder ArgoEclipse. Beide bieten die Möglichkeit Sequenz-, Klassen-, Aktivitäts- und Usecase Diagrammme zu erstellen. Installiert werden sie über den Update- und Installationsmanager von Eclipse. Es soll hier nicht weiter auf die entsprechenden Funktionen der einzelnen Diagrammtypen eingegangen werden.

18

3.6 Formatierungen einhalten mit PHP CodeSniffer

Eine ebenso nicht unbetrachtliche Wichtigkeit in der Softwareentwicklung nimmt die richtige Formatierung ein. Ihre Priorität liegt darin begründet, dass ein Einlesen in die Entwicklung eines anderen Mitarbeiters leicht vonstattengehen sollte. Dies kann betrachtlich verbessert werden, wenn in einem Projekt stets die gleiche Formatierung verwendet wird, sodass das Schreiben eines Quelltextes einheitlich gestaltet und übersichtlich zu lesen ist. Ein nützliches Plugin zur Gewährleistung einer einheitlichen Quelltextformatierung stellt der PHP CodeSniffer dar. Installiert werden kann er ebenfalls über den Installationsmanager von Zend Studio. Nach erfolgreicher Installation findet sich nun in den Workspace Einstellungen ein neuer Eintrag unter PHP Tools → PHP CodeSniffer. Hierin können verschiedene Einstellungen zu den verwendeten Formatierungen getroffen werden. Dazu gehören die Auswahl eines Formatierungsstandards und die genauere Anpassung dessen in Form von Einstellungen wie Tabulatorweite oder zu ignorierende Sniffs. Die nachfolgende Abbildung zeigt ein Beispiel der Einstellmöglichkeiten dieser Optionen.

19

Abbildung 6 PHP CodeSniffer - Einstellungen

Nachdem nun diese Einstellungen getroffen wurden, muss der CodeSniffer in Zend Studio noch aktiviert werden. In den Workspac Einstellungen unter Validation → PHP CodeSniffer Validator kann dieser auf manuelle Validierung der Formatierungen und / oder automatische Aktivität eingestellt werden. Erstere kann im Kontextmenü der PHP – Perspective auf einzelne Dateien angewandt werden, Letztere aktiviert sich selbständig nach Speicherung einer Quelltextdatei. Findet der CodeSniffer Formatierungsfehler, so zeigt er diese visuell innerhalb der

20

fehlerhaften Quelldatei an. Die folgende Abbildung zeigt einen Ausschnitt eines Formatierungsfehlers, bei welchem die Einrückung von mehrzeiligen Befehlen nicht der aktivierten Formatierungsregel entspricht.

Abbildung 7 PHP CodeSniffer - Editorintegration von Fehlern

3.7 Teamarbeit mittels Subversion

Wird ein Projekt unter mehreren Entwicklern erstellt, so ist es wichtig jedem stets die aktuellste Version der Dateien bereithalten zu können. Des Weiteren ist es wichtig Änderungen zu dokumentieren und gegebenenfalls das Projekt auf einen älteren Stand zurücksetzen zu können. Hier kommt das Versionskontrollprogramm Subversion (SVN) ins Spiel. Es dokumentiert selbständig Änderungen an Dateien. Dazu legt es bei jedem Speichervorgang, dem sogenannten Einchecken, eine neue Revisionsnummer an, mit deren Hilfe stets ersichtlich ist wann, was genau und wo etwas geändert wurde. Zusätzlich bietet dies den Vorteil, dass der Entwickler bei aktualisieren seiner Dateien nicht mehr alle neu kopieren, sondern nur noch die seit seinem letzten Aktualisierungvorgang geänderten Dateien neu aus dem Repository zu beziehen braucht. Die SVN Unterstützung in Zend Studio wird beispielsweise über die Plugins Subclipse und Subversive bereitgestellt. Die nachfolgenden Ausführungen werden anhand von Subclipse erläutert, wobei sich dieses jedoch von Subversive nur marginal unterscheidet.

21

3.8 Integration von Subclipse in Zend Studio

Nach der Installation über den Updatemanager von Zend Studio integriert sich das Programm selbständig in die Explorer Perspektive. Die Symbole der einzelnen Dateien und Ordner werden mit kleinen Zeichen versehen, die den aktuellen Status anzeigen. Des Weiteren ist im Kontektmenü der Eintrag Team mit allen Funktionalitäten des SVN - Clients versehen. Die Team Synchronisation - View bietet eine Übersicht zu den lokal und im Repository geänderten Dateien. Des Weiteren kann jetzt auch die SVN Exploring – View verwendet werden.

3.9 Repository aktivieren und auschecken

Die SVN Exploring - Perspective bietet Zugriff auf ein gesamtes Repository. Der hier enthaltene Eintrag zum Repository wird benötigt, damit die SVN Funktionen in einem Projekt genutzt werden können. Hier wird für Zend Studio definiert, mit welchen Dateien sich das Projekt synchronisieren muss, also welche lokalen Dateien ein Abbild des Repositorys darstellen sollen. Nach einen Klick auf Add SVN Repository (zu finden in der oberen rechten Hälfte der SVN Repositories - View), der Eingabe der Repository URL und evtl. der Eingabe eines Nutzernamens und Passworts ist das Repository sichtbar, bzw. dessen Zugriff aktiviert. Nun wählt man den gewünschten Ordner, welcher sich i.d.R trunk nennt, und wählt nach Klick auf den gewünschten Ordner im Kontextmenu auf Checkout. Nach Auswahl, ob diese Dateien als ein gesamtes Projekt ausgecheckt oder sich in ein vorhandenes integrieren sollen, ist der Vorgang des erstmaligen Dateibezugs beendet. Fortan kann man über die bereits erwähnte Team Synchronisation - Perspective und dem Kontextmenü die Repository Dateien aktualisiert werden.

22

3.10 Prozedur des SVN Merge-, Update-, und Eincheckvorgangs

Diese drei Tätigkeiten werden idealerweise in der Team Synchronisation - Perspective getätigt. Der Vollständigkeit halber sei hier erwähnt, dass diese Funktionen auch im Kontextmenu des PHP Explorers aufgerufen werden können. Dies ist jedoch aufgrund der mangelnden Übersicht, vor allem über Dateikonflikte, nicht zu empfehlen. Durch einem Klick auf Synchronize SVN in der Synchronize – View ist die Liste aktualisiert. Nun kann nach lokalen Dateiänderungen, Änderungen im Repository und nach Merge Konflikten gefiltert werden. Über das Kontextmenü können jetzt einzelne Dateien verglichen oder Änderungen auf beiden Seiten synchronisiert werden.

Bevor jedoch Änderungen in das lokale Verzeichnis oder das des SVN überschrieben werden sollte zuerst nach Merge-Konflikten geschaut werden. Dies sind Dateiänderungen, welche beim synchronisieren Probleme hervorrufen werden. Nimmt man Änderungen an Textdateien vor, so können diese auf der anderen Seite (lokal oder Repository), sofern sie nicht die selbe Zeile betreffen, ohne Probleme synchronisiert werden. Bei binären Dateien (z.B. Bildern) oder Änderungen an einer gleichen Textzeile, muss der Nutzer entscheiden, welche der Änderungen die richtige oder aktuellste ist. Dazu wählt man im Kontextmenü Edit Conflicts aus. Es öffnet sich ein Editorfenster zum Vergleich der lokalen Datei mit der aktuellen Repository Version. Auf der linken Seite ist die lokale und auf der rechten die des Repository zu sehen. Die nachfolgende Abbildung zeigt solch ein Vergleichsfenster. In ihm sind sämtliche Differenzen ersichtlich und können sofort mittels Klick auf die Verbindungsstellen behoben werden oder müssen bei Konflikten vom Entwickler von Hand nachbearbeitet werden.

23

Abbildung 8 Team-Synchronisation mit SVN-Dateivergleich

Die mit rot markierten Streifen zwischen den Editoren signalisieren Konfliktzeilen. Nachdem man sich diese angesehen und/oder editiert hat, wählt man im Kontektmenü Override and Update oder Override and Commit. Der erste Punkt dient dazu SVN mitzuteilen, dass nicht bearbeitete Konflikte vom SVN in die lokale Datei zu überspielen sind. Der zweite Punkt überspielt die aktuelle Datei ins SVN ohne auf weitere Konflikte zu achten. Alternativ können auch die editierten Änderungen vorerst nur lokal beibehalten werden. Dazu wählt man den Punkt Mark As Merged um die Änderungen dem SVN einem späteren Zeitpunkt zu übermitteln.

Treten keine Konflikte mehr auf und man möchte sämtliche Dateiänderungen aus dem Repository beziehen, so tätigt man dies mit einem Klick auf Update All

24

Incoming Changes in der Synchronize - View. Damit werden sämtliche Repository Änderungen in die lokalen Dateien einfügen.

Wurden Änderungen an den Dateien auf lokaler Seite vorgenommen, so wird mit einem Klick im Synchronize View unter Commit All Outgoing Changes... ein Dialog geöffnet. In diesem nachfolgenden Fenster wird mit der Auswahl eines Commit Kommentars und der Markierung der zu übertragenen Dateien der Commit initiiert. Dies bedeutet, dass die Ordner und Dateien in das Repository eingepflegt und die Revisionsnummer erhöht wird.

3.11 Zend Debugger

Früher oder später werden in einer Entwicklung Fehler entstehen. Das Debugging mittels Software stellt eines der wichtigsten Funktionalitäten beim Testen von Software dar. Es ermöglicht den Script (oder auch das Programm) dynamisch, d.h. beim Ausführen, an gewünschter Stelle zu pausieren und sich den aktuellen Zustand des ausgeben und evtl. sogar ändern zu lassen. Somit können Fehler bei richtiger Anwendung (sogenannte Bugs) schneller und einfacher als bspw. mit Testausgaben von einzelnen Variablen im Browser gefunden und behoben werden.3

Der Zend Debugger ist ein sogenannter Remotedebugger. Er ermöglicht es den Debugprozess auf einem externen Server auszuführen und die Dateien für Debugprozesse zu nutzen. Mit den nächsten Kapiteln sollen die vorbereitenden Tätigkeiten und die mögliche Nutzung des Debuggers gezeigt werden.

3 [Pri06], S. 21

25

3.12 Installation und Konfiguration des Debuggers

Zur Installation des Debuggers benötigt man zwei Dateien. Zum Einen muss man im Root Verzeichnis des auszuführenden Servers eine Datei namens dummy. speichern und zum Zweiten wird eine Bibliotheksfunktion zum Ausführen des Programms benötigt. Deren Standort variiert je nach verwendetem Betriebssystem. Sind beide in den entsprechenden Verzeichnissen hinterlegt muss man dem Server in der php.ini nur noch die Erlaubnisse eines Remotezugriffs mitteilen.4 Nun kann der Debugger im Zend Studio genutzt werden. Genauere Anleitung zur Installation kann in Anlage E: Installing the Zend Debugger eingesehen werden.

Des Weiteren ist ein Plugin für den Browser Firefox von Nutzen. Die sogenannte Zend Studio Toolbar integriert sich nach Installation reibungslos in den Browser und bietet vereinfachten Zugriff auf Debugprozesse von Zend Studio. Die URL der Installationsdatei kann in Anlage A: Plugin Downloadlinks eingesehen werden. Nachfolgend zeigt eine Abbildung den Ausschnitt des Browserfensters, in welchem die Toolbar integriert wird. Relevante Nutzungseinstellungen des Plugins sind keine zu treffen, da benötigte Änderungen einzig auf Serverseite mittels dummy.php und php.ini getroffen werden müssen.5

Abbildung 9 Firefox mit Zend Toolbar

4 [Zen07], S. 1 f. 5 [Zen09], S. 3 ff.

26

3.13 Verwendung des Debuggers

Der Zend Debugger beherrscht im Wesentlichen das Profiling, das ausgeben eines Stack Traces und letztendlich natürlich das Debuggen selbst. Im Folgenden werden diese separat behandelt, da sie eigenständige Funktionalitäten darstellen.

Kommt ein Script beim Aufruf auf lange Ausführungszeiten, so ist es wichtig den Bereich der Zeiteinbußen einzugrenzen. Der Profiler dient hier als entscheidende Hilfe. Er wird mittels Browser-Toolbar oder im Zend Studio selbst auf eine Serveranfrage (oder auch Serverrequest), d.h. das Ausführen eines Scriptes, angewandt. Nachdem der Request beendet ist, zeigt er verschiedene Eigenschaften in einer Statistik an. Die nachfolgende Abblidung zeigt solch eine Statistik. Enthalten sind die Anzahl der Aufrufe einer Klasse bzw. Methode, die Gesamtzeit, mit welcher der Server in diesem Teil der Datei mit der Abarbeit beschäftigt war und Aufrufanzahl.

27

Abbildung 10 ZendDebugger – Profiler

Die namensgebende Funktion ist das Debuggen. Mit ihr kann man die Ausführung des Skriptes an beliebiger Stelle pausieren und sich die aktuellen Variablenbelegungen anzeigen lassen. Um dem Skript mitzuteilen, wo er halten soll, müssen sogenannte Breakpoints gesetzt sein. Sie sind Haltepunkte, mit denen man dem Server mitteilt, dass, sollte die Skriptausführung an diese Stelle gelangen, auf weitere Eingaben gewartet werden soll. Angelegt werden sie, indem man in der Editor – View links auf die Zeilenanzahl doppelt klickt. Nun kann abermals mittels Browser-Toolbar oder im Zend Studio selbst der Debugprozess gestartet werden. Das Firefox-Plugin bietet hierbei die Möglichkeit den Debugger definierter einzusetzen, indem beispielsweise die aktuelle Seite einmalig neu geladen wird oder der nächste aktivierte Link den Debugger startet. Nun, nachdem pausiert wurde, können sämtliche deklarierte Variablen und deren Inhalt, wie in der nachfolgenden Abbildung dargestellt, eingesehen und auch verändert werden, sodass der Skript im nächsten Schritt mit den editierten Werten weiter rechnet.

28

Zur Steuerung des weiteren Debugprozesses nach erfolgreichem pausieren des Skriptes kann man jetzt die Skriptausführung in Einzelschritten innerhalb der aktuellen Methode weiterverfolgen, in einen aktuellen Methodenaufruf hinein springen (im Bild zu sehen) oder aus dieser Methode herausgehen und in den übergeordneten Aufruf wechseln. Die letzte Möglichkeit besteht darin, dem Debugger mitzuteilen, dass er den Skript, bis zum evtl. nächsten Breakpoint, normal ausführen soll. Die dafür verwendeten Shortcuts können der Tabelle der Anlage B: Wichtige Shortcuts in Zend Studio entnommen werden.

Abbildung 11 Debug Perspective

Die letzte wichtige Funktion ist der Stack Trace. Je verschachtelter eine Requestabarbeitung, d.h. desto mehr Methoden aufgerufen werden, je undurchsichtiger ist der gesamte Request durchzusehen. Wenn sich nun an einer Stelle ein Fehler bemerkbar macht, so wurde er meist viel früher erstellt und

29

weitergereicht, bis er sich später bemerkbar macht. Der Stack Trace dient nun dazu an einem gewünschten Punkt die Aufrufhistorie von der jetzigen Methode bis vom Ausgangspunkt, d.h. der ersten aufgerufenen Methode, zurückverfolgen zu können. Da er sehr eng mit den Breakpoints vernetzt ist, wurde er auch in die Debug - Perspective eingesetzt und ist bei jedem Debugstopp, wie im vorherigen Bild dargestellt, sichtbar. Des Weiteren sind die einzelnen Einträge im Trace verlinkt, wodurch man mittels Klick auf einen Eintrag zu diesem Punkt in der Abarbeitung „zurückspringen“ kann.

3.14 Abschließende Worte zu Erweiterungen

In den vorhergehenden Kapiteln wurde eine mögliche Verwendung des Zend Studio mit verschiedenen integrierten Funktionen und zusätzlich installierten Plugins gezeigt. Jedoch stellen diese nur einen geringen Teil der Bandbreite an Erweiterungen dar. Durch die einfache, wie bereits am Beispiel von Subclipse und AmaterasUML gezeigte, Erweiterbarkeit existieren bereits eine Menge solcher nützlichen Erweiterungen.

30

4 Fazit

Durch den einheitlichen Zugang zu vielen Funktionalitäten stellen Entwicklungsumgebungen einen wesentlichen Aspekt einer effektiven softwareunterstützten Entwicklungsarbeit dar. In einem wachsendem Projekt mit hohem Verbrauch an Zeit, einer steigenden Menge an Dateien oder einer Arbeit, die es ermöglichen soll im Team zu entwickeln, spielt eine IDE ihre Stärken in steigendem Maße aus. Zend Studio stellt hier eine wichtige Rolle in der Entwicklung von PHP Projekten dar, da die IDE nach Bedarf an die Wünsche des Entwicklers funktional als auch optisch angepasst werden kann. In der Grundausstattung besitzt es bereits eine Menge an Funktionalitäten, welche durch einen einfachen Installationsprozess erweitert werden können. Dies, und die Tatsache, dass Zend Studio direkt für PHP entwickelt wurde, macht es zu einer starken Unterstützung in der Webprogrammierung. Zum Zeitpunkt der Verfassung dieser Arbeit war die aktuelle Version 7.2. Es wurde aber bereits eine neue Version 8.0 angekündigt. In ihr sollen dann Funktionen wie ein erweiterter JavaScript Support von Bibliotheken (JQuery, Prototype, etc.) oder VMWare Unterstützung zur verbesserten Entwicklung in virtualisierten Systemen integriert sein.6 Die weitere Entwicklung von Zend Studio wird zeigen, ob es seine Wichtigkeit auch später behalten wird.

6 [Zen10a], S. 1

31

Anlagenverzeichnis

Anlage A: Plugin Downloadlinks (Blatt 1)

Anlage B: Wichtige Shortcuts in Zend Studio (Blatt 2)

Anlage C: Wichtige PHPDocumentor Tags

Anlage D: Zend Studio 7.2 User Guide (externe PDF)

Anlage E: Installing the Zend Debugger (externe PDF)

Anlage F: Installing the Zend Browser Toolbar (externe PDF)

Anlage G: Übersicht der einzelnen PHP IDEs (externes Excel-Sheet)

32

Anlage A: Plugin Downloadlinks

Die nun folgenden Links repräsentieren die Download URLs zu den einzelnen, in der Arbeit vorgestellten, Plugins. Diese müssen, wie bereits im Kapitel Funktionserweiterung mithilfe des Plugin Systems erläutert, in Zend Studio eingegeben oder über das Dateisystem integriert werden.

AmaterasUML http://sourceforge.jp/frs/redir.php?m=iij&f=%2Famateras%2F38882%2FAmaterasU ML_1.3.2.zip

ArgoEclipse http://argoeclipse.tigris.org/update_site

PHP CodeSniffer http://www.phpsrc.org/eclipse/pti/

Subclipse http://subclipse.tigris.org/update_1.6.x

Zend Studio Toolbar for Firefox http://downloads.zend.com/studio_plugins/2.3/ZendFirefoxToolbar-2.3.xpi

33

Anlage B: Wichtige Shortcuts Tastenkombination Aktion Anwendunsort Strg + B Projekt bauen (Build). PHP - Perspective D.h. alle Symbole, wie Klassen, Vererbungen, etc., aktualisieren. F5 In Methodenaufruf Debug – Perspective hineinspringen (Step Into). F6 In gleicher Ebene Debug – Perspective weitergehen (Step Over). F7 Aus Methode Debug – Perspective herausspringen (Step Return). F8 Normale Ausführung bis Debug – Perspective zum nächsten Breakpoint fortsetzen (Resume). Strg + Leertaste Content Assist öffnen Editor - View Strg + O Outliner öffnen. Zeigt Editor – View alle Methoden und Variablen der aktuellen Klasse an. Strg + T Type Hierarchy öffnen. Editor – View Zeigt alle erbenden Klassen der aktuell markierten an. Strg + [Bild Auf|Bild Ab] Wechsel zwischen den Editor – View einzelnen Editortabs. Strg + W Aktuelles Editorfenster Editor - View schließen.

34

Strg + D Aktuelle Zeile löschen. Editor - View Strg + F Suche in aktueller Datei Editor – View (Find/Replace). Strg + H Dateisuche öffnen PHP Explorer – View (Search). Eingrenzung für gewünschte Dateien möglich.

35

Anlage C: Wichtige PHPDocumentor Tags Tag Kurzbeschreibung @author Der Author des Dokuments oder Dokumentenabschnitts (Methode, etc.). @copyright Definiert das Copyright einer Datei. @deprecated Zeigt an, dass diese Klasse / Methode in Zukunft nicht mehr verwendet werden sollte. @licence Lizentzyp der Datei. @param Definiert einen übergebenen Parameter. Die verwendete Syntax könnte lauten:

@param [Typ] $name - Kurzbeschreibung @return Gibt den Typ des Returnwertes an (z.B. string, array, stdClass). @see Gibt einen Hinweis auf externe, zu betrachtende Methoden / Klassen. @throws Gibt die in der Methode geworfenen Exceptionklassen an. @uses Zeigt Verwendungen von externen Variablen / Klassen an.

36

Literaturverzeichnis [Eng98] Engels, G., Schäfer, W.:“Programmentwicklungsumgebungen - Konzepte und Realisierung“, 1. Auflage, Stuttgart, Teubner, 1998 [Mar09] Martin, R.: „Clean Code – Refactoring, Patterns, Testen und Techniken für sauberen Code“, 1. Auflage, Heidelberg et. al., mitp-Verlag, 2009 [Mör09] Möhrke, C.: „Besser PHP Programmieren - Handbuch professioneller PHP-Techniken“, 3. Auflage, Bonn, Galileo Press, 2009 [Pri06] Priebsch, S.: „Enterprise PHP Tools - Werkzeuge und Methoden für einen effizienten Entwicklungsprozess“, Frankfurt am Main, entwickler.press, 2006 [Dot10] dotSource GmbH: „dotSource Magento Wiki“, 2010, http://wiki.dotsource.de/bin/view/Magento/PHP_Development_Guides Abruf: 18.09.2010 [Goo09] Google Spreadsheets: “PHP IDE 31. Jan 2009”, 2009, http://spreadsheets.google.com/ccc?key=pV8XyUSUOM7GsmVMLVit0Hw Abruf: 18.09.2010 [Zen09] Zend Technologies: “Installation and User Guide – Zend Browser Toolbar”, 2009, http://static.zend.com/topics/Zend-Debugger- Toolbar-Installation-Guide.pdf Abruf: 25.09.201 [Zen07] Zend Technologies: „Installing the Zend Debugger“, 2007, http://static.zend.com/topics/Debugger-Install.pdf Abruf: 25.09.2010 [Zen10a] Zend Technologies: “Zend Studio 8 – Release Notes“, 2010, http://www.zend.com/topics/Zend-Studio-8.0.0-b2-Release-Notes.txt Abruf: 25.09.2010 [Zen10b] Zend Technologies: „User Guide – Zend Studio 7.x“, 2010, http://www.zend.com/topics/Zend-Studio-7-User-Guide-v7-2.pdf Abruf: 25.09.2010

37

Glossar

C

Content Assist

Dynamisches Anzeigen von Befehlsvervollständigungen, abhängig vom eingegebenen Präfix.

K

Kontextmenü

Optionsansicht, welche meist über einen Rechtsklick auf einem Objekt ausgeführt wird. Die dabei angezeigten Daten sind auswahl-/ objektabhängig.

P

Perspective (Zend Studio)

Sie definiert einen Grundaufbau des Programmlayouts. Es existieren mehrere Views, welche meist einer Grundfunktion angepasst sind (z.B. PHP, Debug, SVN). Ihr Inhalt besteht aus verschiedenen Views.

PHP

Scriptsprache, welche meißt bei der Entwicklung von Webapplikationen verwendet wird.

Plugin

Erweiterung zu einem bestehenden Programm in Form einer Software.

38

Profiling

Dient der Anzeige relevanter Daten an Zeit- und Speicherverwendungen eines Programmablaufs.

Project (Zend Studio)

Strukturelle Trennung von Softwareentwicklungen innerhalb eines Workspace.

R

Remotedebugger

Debugger, welcher einen Debugzugriff auf Dateien von entfernten Systemen ermöglicht (Sogenanntes Client–Server-Modell). Dabei ist zu beachten, dass die Sicherheitsvorkehrungen des Servers den Zugriff über die verwendeten Ports und IPs erlauben.

Repository

Ist der Datenpool, in dem beim SVN sämtliche Änderungen nach Versionsnummer, Commitautor und –kommentar gespeichert sind.

S

Social Commerce

Art des Onlinevertriebs, bei der die Einbeziehung des Kunden in den Kauf und weitere damit verbundene Aktiviäten gefördert wird. Im Vordergrund steht die Kundenbindung aufgrund des sozialen Mehrwertes eines solchen Onlinevertriebs.

SVN

39

Versionskontrollprogramm, welches häufig in Softwareprojekten verwendet wird, da sämtliche Versionszyklen einseh- und wiederverwendbar sind.

Syntax Coloring

Farbliche Hervorhebung von sprachenspezifischen Befehlen (z.B. Schleifen oder Verzweigungen).

V

View (Zend Studio)

Eine View ist ein Teil einer Perspektive, in welcher eine Funktion abgebildet wird (z.B. Editoransicht, Debug Output).

W

Workspace (Zend Studio)

Stellt eine strukturelle Trennung von Projekten, in Form eines auszuwählenden Ordners, dar. Innerhalb eines Workspace können mehrere Projekte gleichzeitig bearbeitet werden.

40

Ehrenwörtliche Erklärung

Ich erkläre hiermit ehrenwörtlich,

1. dass ich meine Studienarbeit mit dem Thema:

Effizientere PHP Entwicklung mit Zend Studio - Richtiger Umgang mit wichtigen Funktionen

ohne fremde Hilfe angefertigt habe, 2. dass ich die Übernahme wörtlicher Zitate aus der Literatur sowie die Verwendung der Gedanken anderer Autoren an den entsprechenden Stellen innerhalb der Arbeit gekennzeichnet habe und 3. dass ich meine Studienarbeit bei keiner anderen Prüfung vorgelegt habe.

Ich bin mir bewusst, dass eine falsche Erklärung rechtliche Folgen haben wird.

Ort, Datum Unterschrift