Programmieren mit PHP - Andreas Hitzig - E-Book

Programmieren mit PHP E-Book

Andreas Hitzig

0,0

Beschreibung

Der Trend in Richtung PHP hält unvermindert an. Als Skriptsprache lässt sich PHP extrem schnell erlernen. Im Gegensatz zu komplexeren Sprachen sind Programmierer mit PHP sofort produktiv, erzielen schnelle Resultate und können bei ihrer Arbeit mit Endanwendern in kurzen, iterativen Entwicklungszyklen zusammenarbeiten. Andreas Hitzig vermittelt Ihnen in diesem Buch die Grundlagen der Programmierung von Web-Applikationen mit PHP. Mit anschaulichen Beispielen und sofort verwendbaren Codebeispielen auf 52 Seiten lernen Sie schnell und effizient die wichtigsten Bestandteile der Skriptsprache lernen.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 114

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



EDITORIAL

Programmieren mit PHP

Der Trend in Richtung PHP hält unvermindert an. Nicht nur, dass die professionellen Marktbeobachter in regelmäßiger Abfolge mit neuen Erfolgszahlen aufwarten können. Die Erfolgsstory von PHP lässt sich auch an anderen Gradmessern festmachen. Als Skriptsprache lässt sich PHP extrem schnell erlernen. Im Gegensate zu komplexeren Sprachen sind Programmierer mit PHP sofort produktiv, erzielen schnelle Resultate und können bei ihrer Arbeit mit Endanwendern in kurzen, iterativen Entwicklungszyklen zusammenarbeiten.

»PHP ist eine robuste, schnelle und skalierbare Plattform«

PHP ist eine robuste, schnelle und skalierbare Plattform. Sie eignet sich für die Automatisierung missionskritischer Geschäftsprozesse mit großen Volumina - unabhängig davon, ob sie sich an den Kunden richten oder rein unternehmensintern ablaufen. Die weite Verbreitung und die lebhafte Community von PHP stellen sicher, dass beinahe jedes denkbare Einsatzszenario getestet wurde. Durch die Tatsache, dass sich PHP einfach erweitern lässt, können neue Fähigkeiten flexibel hinzugefügt und Erweiterungen von dritter Seite genutzt werden.

Und nicht zuletzt: PHP integriert sich nahtlos in eine Vielzahl von bestehenden Unternehmensumgebungen und -systemen.

LINK ZUM THEMA Die Nachrichten auf codekicker.news stammen nicht nur aus den Redaktionen von web-developer, dotnetpro und mobile-developer, auch bekannte Blogger aus der Entwicklercommunity veröffentlichen ihre Beiträge bei Codekicker.Webentwickler, die ihre News einer größeren Leserzahl zugänglich machen möchten, können sich mit ihrem Weblog bei codekicker.news bewerben, um ihre Beiträge automatisiert in den Nach-richten-Feed zu übernehmen. Die Entwicklerblogs werden redaktionell geprüft und ausgewählt, um die passende Themenmischung zu gewährleisten und interessante News und Artikel für Programmierer auf codekicker.news zu präsentieren.

Inhalt

Objektorientierte Programmierung PHP5 hat mit dem objektorientierten Ansatz neue Funktionen und Vorgehensweisen an Bord wie sie auch von anderen Programmiersprachen zur Verfügung gestellt werden.

Geolocation Dienste Jeder Surfer ist durch seine IP-Adresse eindeutig identifizierbar. Diese Daten verraten auch seine Herkunft und lassen Rückschlüsse zum Einstiegsknoten ins Internet zu.

Ausnahmebehandlung mit PHP Seit der Version PHP5 ist es möglich, eigene Ausnahmeregeln zu definieren, Ausnahmen mit throw auszulösen und mit catch wieder einzufangen.

Session-Verwaltung mit PHP PHP bietet unterschiedliche Optionen, Zwischenstände zu speichern und zu übergeben.

Datenaustausch mit JSON Seit PHP Version 5.2 ist JSON fester Bestandteil der Auslieferung. Mit Hilfe der JavaScript Object Notification lassen sich per PHP Daten zwischen Client und Server austauschen.

Dateioperationen mit PHP PHP besitzt umfangreiche Funktionen, mit denen Entwickler Dateien und Verzeichnissen in Web-Applikationen manipulieren können.

Menüs per PHP erzeugen Bei der individuellen Entwicklung von Websites gibt es oftmals die Anforderung einer mehrstufigen Menüstruktur. Dies lässt sich auch mit Hilfe von PHP und DOM erstellen.

XML-Verarbeitung mit PHP XML ist die zentrale Sprache für den neutralen Austausch von Inhalten. PHP sieht verschiedene Lösungen für die Verarbeitung von XML-Dateien vor.

Framework CakePHP CakePHP ist im vergangenen Jahre in der Version 2.0 erschienen. Das PHP Framework setzt auf dem MVC-Ansatz auf und bietet zahlreiche neue Funktionen.

Objektorientierte Programmierung

PHP 00 in der Tiefe

Der objektorientierte Ansatz von PHP bringt eine Reihe neuer Möglichkeiten mit. Wir zeigen Ihnen, wie Sie diese zielgerichtet einsetzen.Von Andreas Hitzig

AUF EINEN BLICK » Das wesentlichste neue Feature, das mit PHP 5 kam, war die bessere Unterstützung von objektorientierter Programmierung. » Der Workshop erläutert, wie PHP-Programmierer diese Technik optimal einsetzen.

PHP 5 hat mit dem objektorientierten Ansatz neue Funktionen und Vorgehensweisen an Bord. In diesem Workshop zeigen wir Ihnen einige neue Aspekte und deren Anwendungsgebiete. Entwickeln Sie bereits in einer anderen objektorientierten Sprache wie Java, C++ oder C#, dann finden Sie sehr schnell Gemeinsamkeiten. Die folgenden Beispiele sollen die neuen Funktionen der Programmiersprache demonstrieren und sind willkürlich aus dem Alltag gegriffen.

Sicht von außen und innen

Haben Sie bereits in der Vergangenheit mit objektorientierten Sprachen gearbeitet, dann kennen Sie die unterschiedlichen Sichtweisen auf die Elemente einer Klasse von innen und von außen. Greifen Sie mit Ihrer Anwendung von außen auf die Elemente und Objekte einer Klasse zu, sehen Sie lediglich alle, die mit public deklariert sind. Wie nicht anders zu erwarten, verhält sich auch PHP 5 nicht anders, wenn Sie versuchen, mit einer foreach-Abfrage alle Eigenschaften einer Klasse zu ermitteln: Sie werden immer nur die öffentlichen, mit public definierten sehen, falls Sie sich außerhalb der Klasse befinden. Lediglich innerhalb einer Klasse stehen auch die privaten Eigenschaften zur Verfügung:

Die Klasse meine_Getraenkeliste enthält insgesamt fünf Eigenschaften: liebling_1 bis liebling_5. Die ersten drei Eigenschaften sind als public definiert, also auch entsprechend von außen sichtbar. Die letzten beiden sind protected und private, somit nur innerhalb der Klasse verfügbar. Erzeugen Sie anschließend eine Variable der Klasse meine_Getraenkeliste, so enthält diese wie bereits erwartet lediglich die drei Eigenschaften, die von außen sichtbar sind. Diese werden entsprechend bei der foreach-Schleife ausgegeben. Benötigen Sie jedoch zusätzlich noch Zugriff auf die beiden geschützten Eigenschaften liebling_4 und liebling_5, hatten Sie nur wenige Möglichkeiten. Am einfachsten war eine öffentliche Funktion, welche kurzfristigen Zugriff auf die Elemente ermöglichte:

public function mache_sichtbar() { foreach($this as $key => $value) { print $key.'-'.$value.'<br>'; } }

Diese können Sie von jeder beliebigen Stelle aus aufrufen. In PHP 5 gibt es allerdings eine neue Schnittstelle namens Iterator. Sie bietet Ihnen mehrere Methoden für den Zugriff auf Objekte, welche diese Schnittstelle unterstützen:

rewind()

setzt den Zeiger zurück und startet mit dem ersten Element des Arrays,

valid()

überprüft, ob Sie nach einem

rewind()

oder

next()

ein Element im Zugriff haben,

key()

enthält den Schlüssel des aktuellen Elements,

current()

entsprechend den Wert des aktuellen Elements,

next()

bewegt den Zeiger auf das nächste Element des Arrays.

Das Beispiel in Listing 1 implementiert eine einfache Klasse mein_Iterator mit allen verfügbaren Methoden.

Das Array enthält drei Elemente: Element1, Element2 und Element3. Wenn Sie den Zeiger mit foreach innerhalb des Arrays bewegen, können Sie die zugeordneten Methoden aufrufen und diese entsprechend einsetzen. Im Beispiel wird lediglich der jeweilige Wert und der Name des Schlüssels ausgegeben.

Nützliche Unterstützung

Mit PHP 5 sind zahlreiche neue Funktionen für Klassen und Objekte hinzugekommen, die Ihnen die tägliche Arbeit erleichtern sollen. Eine komplette Liste finden Sie auf der PHP-Website unter der Adresse http://de2.php.net/manual/de/ref.classobj.php(Bild 1). Im Folgenden stellen wir Ihnen einige der wichtigsten Neuankömmlinge vor.

In der Online-Dokumentation von PHP 5 finden Sie eine gute Einführung ins Thema Objektorientierung (Bild 1)

Bereits seit PHP 4 gibt es die Funktion class_exists(), die allerdings in PHP 5 um den zusätzlichen Parameter autoload erweitert worden ist. Die Funktion überprüft die Existenz einer bestimmten Klasse und gibt als Ergebnis entweder true oder false zurück (Bild 2). Die Beschreibung der Funktion sieht wie folgt aus:

autoload() bietet eine einfache Fehlerbehandlung bei nicht definierten Klassen oder Schnittstellen (Bild 2)

Der Parameter class_name ist der Klassenname, bei dem die Groß- und Kleinschreibung keine Rolle spielt. Der neu hinzugekommene Parameter autoload definiert die Nutzung der gleichnamigen Funktion - der Standardwert ist auf true gesetzt:

In der if-Abfrage wird überprüft, ob die Klasse meineKlasse existiert - im Fehlerfall wird die Funktion autoload mit dem Klassennamen aufgerufen und die Klasse geladen. Zur Sicherheit wird innerhalb der Funktion überprüft, ob die Klassendatei generell zur Verfügung steht, und im Fehlerfall eine Meldung ausgegeben. Damit dies nicht in einer Endlosschleife mündet, wird bei dieser Überprüfung explizit die Verwendung der autoload-Funktion durch Setzen des zweiten Parameters ausgeschlossen.

Methoden und Eigenschaften

Neben der Überprüfung der Klasse bietet Ihnen PHP weitere Funktionen zur Prüfung, ob einzelne Elemente vorhanden sind, wie etwa method_exists oder property_exists. Die erste Funktion überprüft, ob eine Methode innerhalb eines Objekts existiert, und liefert entsprechend true oder false als Rückgabewert:

bool method_exists ( mixed $object , string $method_name )

Als Übergabewert geben Sie eine Objektinstanz oder einen Klassennamen sowie den gewünschten Methodennamen mit. Neu seit PHP 5 ist die Möglichkeit, diese Überprüfung auch für die vorhandenen Eigenschaften mit Hilfe von property_exists() durchzuführen:

bool property_exists ( mixed $class , string $property )

Die Struktur der Übergabeparameter ist vergleichbar mit method_exists() und umfasst den Namen der Klasse oder eines Objekts sowie den Namen der Eigenschaft.

Ebenfalls bereits seit PHP 4 existiert die Funktion get_parent_class(), die in PHP 5 einige Anpassungen erfahren hat. Die Struktur ist denkbar einfach und besitzt lediglich einen - inzwischen optionalen - Parameter, der das untersuchte Objekt oder den untersuchten Klassenname enthält:

string get_parent_class ([ mixed $object ])

Als Rückgabewert erhalten Sie den Namen der Elternklasse zurück. Besitzt das Element keine Elternklasse, ist der Rückgabewert entsprechend false. Rufen Sie die Funktion außerhalb eines Objekts ohne Parameter auf, ist der Rückgabewert ebenfalls false:

Die Elternklasse ist auto, von der die beiden Kindklassen familienauto und sportwagen abgeleitet sind. Als Übergabe der Klasse familienauto wird eine direkte Referenzierung über das Objekt dargestellt, in der Klasse sportwagen entsprechend über den Namen der Kindklasse.

Informationen zur Klasse

Benötigen Sie innerhalb des Programmablaufs Zugriff auf die einzelnen Methoden einer Klasse, nutzen Sie die Funktion get_class_methods(). Diese liefert Ihnen in einem Array alle Methoden der Klasse:

array get_class_methods ( mixed $class_name )

Als Parameter übergeben Sie den Namen der Klasse oder die Instanz eines Objekts. Tritt bei der Ausführung des Befehls ein Problem oder ein Fehler auf, liefert get_class_methods() den Wert false. Seit PHP 5 bekommen Sie alle Methodennamen so geliefert, wie sie definiert worden sind - die Groß- und Kleinschreibung wird entsprechend berücksichtigt.

In der Klasse meine_Klasse() definieren Sie zwei Methoden: meine_Funktion1 und meine_Funktion1 (Listing 2). Es gibt zwei alternative Methoden, wie Sie get_class_methods() einsetzen können: entweder direkt mit der Übergabe eines konkreten Klassennamens, oder Sie erzeugen als Übergabeparameter die Instanz einer Klasse. Bei der anschließenden Ausgabe der gespeicherten Werte im Array finde_Methoden_zur_Klasse erhalten Sie folgendes Ergebnis:

meine_Klasse meine_Funktion1 meine_Funktion2

LISTING 2: GET_CLASS_METHODS() class meine_Klasse { function meine_Klasse() { return(true); } function meine_Funktion1() { return(true); } function meine_Funktion2() { return(true); } } $finde_Methoden_zur_Klasse= get_class_methods('meine_Klasse'); $finde_Methoden_zur_Klasse= get_class_methods(new meine_Klasse()); foreach ($finde_Methoden_zur_Klasse as $Name_Methode) { echo "$Name_Methode\n"; }

Die Funktion get_class_vars() ist ähnlich aufgebaut und liefert Ihnen als Rückgabewert die Vorgabeeigenschaften einer Klasse als Array. Die Struktur der Funktion sieht wie folgt aus:

array get_class_vars ( string $class_name )

Als Parameter übergeben Sie den Namen der gewünschten Klasse und erhalten als Rückgabewert ein Array mit den vorgegebenen Eigenschaftsvariablen im Format name_der_variablen => wert.

Gerade beim Zugriff auf externe Datenspeicher und Datenbanken ist oftmals eine Fehleroder Ausnahmebehandlung notwendig, falls beispielsweise die Verbindung nicht zustande kommt oder anderweitige Probleme entstehen. Dafür liefert Ihnen PHP 5 mit try...catch eine entsprechende Routine (Bild 3). Im Rahmen der Fehlerbehandlung können Sie für spezielle Ausnahmen eine konkrete Vorgehensweise festlegen, aber auch innerhalb eines Programmcodes mit throw() einen Ausnahmefall direkt auslösen. Die Struktur einer Ausnahmebehandlung sieht wie folgt aus:

class errorhandling extends Exception {} try { Aktion_1(); } catch (Exception $ausnahme_1) { // Behandlung des ersten Fehlers oder der ersten Ausnahme } catch (Exception $ausnahme_2) { // Behandlung des zweiten Fehlers oder der zweiten Ausnahme }

PHP 5 bietet zahlreiche vordefinierte Ausnahmen an (Bild 3)

Die Struktur ist einfach erklärt: Es wird versucht, den Code innerhalb der try-Klammer auszuführen. Tritt ein Fehlerfall auf, soll dieser mit catch abgefangen werden und die Anwendung in einen definierten Endzustand überführt werden.

Bei einer bestimmten Situation löst die Anwendung einen Fehlerfall aus, beispielsweise wenn eine Variable nicht innerhalb eines erwarteten Bereichs ist. Dies geschieht mit Hilfe von throw() und wird innerhalb einer Ausnahmebehandlung entweder individuell für eine definierte Ausnahme oder allgemeingültig für alle zu einem Zustand ohne Absturz geführt.

Sie können auch verschiedene Klassen von Ausnahmen abfangen, indem Sie mehrere catch-Blöcke verwenden. Die Programmausführung wird, falls kein Fehler auftritt, nach dem letzten catch-Block fortgesetzt. Ausnahmen können auch innerhalb eines catch-Blocks ausgelöst und anschließend abgefangen werden.

Im Beispiel in Listing 3 wird überprüft, ob die Partygäste Getränke und, falls ja, die richtigen mitgebracht haben. Erwartet wird von den Gästen entweder ein Kasten Bier oder ein Kasten Mineralwasser. Zuerst wird eine leere Klasse für die Ausnahmebehandlung der Getränkeversorgung erzeugt. In der Klasse partygast wird anschließend festgelegt, welche Getränke abgemacht und erwünscht waren. Bringt der Gast keine Getränke oder die falschen mit, wird eine entsprechende Fehlermeldung ausgegeben und diese mit dem Fehlercode 10 versehen.

In der Programmroutine wird anschließend ein neues Objekt $paul erzeugt. Der Versuch, die Methode getraenkemitbringen