2003-11-15-oop_mit_php_5

  • Uploaded by: Triet
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View 2003-11-15-oop_mit_php_5 as PDF for free.

More details

  • Words: 1,333
  • Pages: 44
OOP mit PHP 5

PHP Usergroup Köln/Bonn @ Com Center Köln 15. November 2003 "Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Wer ich bin • Informatikstudent in Bonn. • Mitglied des PHP Development Teams. • Autor von OpenSource- Projekten wie phpOpenTracker, PHPUnit oder XML Transformer. • Autor für verschiedene Fachmagazine. "Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Sprachmerkmale von PHP • Dynamische Typisierung. • Erlaubt prozedurale, aber auch klassenbasierte, objektorientierte Programmierung. • Eine objektorientiertes PHP Anwendung besteht aus einer Menge von PHP-Klassen, die in Quelltextdateien, die den Regeln der PHP Programmiersprache genügen, deklariert werden. • Diese Quelltextdateien werden vom PHP-Interpiler übersetzt und ausgeführt.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Sprachmerkmale von PHP • PHP funktioniert anders als Java, C# oder “richtige Compilersprachen” wie C/C++. • Seit PHP 4 wird zwar intern Bytecode erzeugt, dieser wird aber nach jedem Request “weggeworfen”. • Optimierungen des Bytecodes machen daher, zumindest ohne Verwendung eines Bytecode Caches, wenig Sinn. • Nicht nur die Kompilierung kostet Zeit, sondern vor allem die Initialisierung des Objektmodells.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Objektorientiertes PHP • Objektorientierte PHP-Anwendungen sind in der Regel langsamer als solche, die prozedural entwickelt wurden. • Im Web-Bereich gilt das Motto “Ein gutes Design ist wichtiger als Performance” nicht unbedingt so kategorisch, wie in der Offline-Welt. • Macht OOP mit PHP daher überhaupt Sinn? • Ja! Aber ...

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Objektorientiertes PHP • Erkenne OO{A|D|P} als Werkzeug, verkenne es nicht als Religion. • Kenne nicht nur den Nutzen, sondern auch die Kosten von OOP. • Abweichungen von der “reinen Lehre” (vergleichbar mit der “Denormalisierung” beim relationalen Datenbankentwurf) sind möglich, und können der Performance zuträglich sein.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Geschichte von OOP in PHP • PHP/FI (“PHP 1” und “PHP 2”): Keine objektorientierten Sprachmerkmale. • PHP 3: Erster Versuch, objektorientierte Programmierung in PHP zu ermöglichen. • PHP 4, Zend Engine 1: Verbesserte Unterstützung für objektorientierte Programmierung, aber stark limitiertes Objektmodell. • PHP 5, Zend Engine 2: Java-ähnliches, von Grund auf überarbeitetes Objektmodell.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

PHP 5 • ... bietet ein neues Objektmodell mit vielen neuen Sprachmerkmalen für OOP. • ... bringt eine verbesserte Unterstützung für XMLTechnologien auf der Basis der libxml2 und libxslt Bibliotheken des GNOME-Projektes. • ... verfügt mit SQLite über eine eingebettete Datenbanklösung. • ... ist fertig, wenn es fertig ist ;-)

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Warum OOP? • Modularisierung: Zerlegung des SoftwareSystems in autonome Einheiten. • Wiederverwendung: Bereits implementierte Einheiten sollen zu einem neuen Ganzen zusammengesetzt werden können. • Erweiterbarkeit: Bestehende Einheiten sollen um neue Funktionalität erweitert werden können. • Abstraktion und Kapselung: Der Verwender einer solchen Einheit nutzt deren öffentliche Schnittstelle, Implementierungsdetails werden versteckt. "Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Warum OOP?

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Klassen und Objekte • Klasse: Bauplan für die Erzeugung von Objekten. • Klasse kapselt Daten (Attribute) und Operationen (Methoden) in einer Einheit. • Jedem Objekt lässt sich eine Klasse zuordnen. • Den Objekten einer Klasse ist ihre Funktion gemeinsam, da sie über die selben Methoden verfügen. • Die Objekte einer Klasse unterscheiden sich nur in ihrem Zustand von einander.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Geheimnisprinzip • Trennung von Nutzungs- und Implementierungsschicht, von Realisierung und Nutzung. • Zu diesem Zweck wird den Attributen und Methoden einer Klasse bei ihrer Deklaration eine von drei möglichen Sichtbarkeiten zugewiesen.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Geheimnisprinzip • private kennzeichnet die lokale Sichtbarkeit. Das Element ist nur in der umgebenden Klasse sichtbar. • protected kennzeichnet die eingeschränkte Sichtbarkeit. Das Element ist nur in der umgebenden Klasse und deren Kindklassen sichtbar. • public kennzeichnet die öffentliche Sichtbarkeit. • Wird keines der drei Schlüsselwörter bei der Deklaration angegeben, so wird implizit public angenommen. "Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Klassen und Objekte

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Klassen und Objekte

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Klassen und Objekte

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

instanceof

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Class Type Hints

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Referenzen

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Klonen von Objekten

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Klassenkontext • Bislang: Attribute und Methoden im Objektkontext. • Jetzt: Attribute, Konstanten und Methoden ausserhalb des Objektkontextes.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Klassenkontext

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Klassenkontext

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Exkurs: Singleton-Pattern • Die Anzahl der Objekte einer Klasse soll beschränkt werden. • Oft ist nur ein Objekt, oder ein Pool mit einer festen Anzahl von Objekten, einer Klasse sinnvoll. • Deklaration des Konstruktors einer Klasse als protected oder private unterbindet die Verwendung des new-Operators. • An dessen Stelle tritt die Verwendung einer statischen Methode, die die Objekterzeugung kontrolliert.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Exkurs: Singleton-Pattern

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Abstrakte Klassen • Abstrakte Klassen überlassen die Implementierung einer oder mehrerer Methoden ihren Kindklassen. • Klassen mit abstrakten Methoden können nicht instanziert werden.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Exkurs: Template Method

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Exkurs: Template Method

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Schnittstellen • Schnittstellen helfen bei der Code-Strukturierung durch Zuweisung einer oder mehrere Rollen an eine Klasse. • Eine Klasse in PHP kann eine oder mehrere Schnittstellen (interface) implementieren. • Eine Klasse, die eine Schnittstelle implementiert (implements), muss deren vereinbarte Funktionalität bereitstellen.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Schnittstellen

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Konstruktor

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Destruktor

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Konstruktor und Destruktor

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Vererbung

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Vererbung

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Behandlung von Ausnahmen • Fehler werden als Ausnahmen vom Standardprogrammablauf verstanden. • Code, von dem man solche Ausnahmen erwartet, wird in einen try-Block gelegt. • Im Anschluss an diesen Block stehen ein oder mehrere catch-Handler, die die erwarteten Fehler behandeln.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Behandlung von Ausnahmen

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Interzeptoren • PHP 5 führt mehrere so genannter Interzeptormethoden ein, die bei bestimmten Ereignissen automatisch aufgerufen werden. • __autoload($className) • __get($memberName) • __set($memberName, $value) • __call($methodName, $parameters) • __toString()

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Migration von PHP 4 zu PHP 5 • • • • •

Kopie versus Referenz. Konstruktor. Klassendeklaration vor Objekterzeugung. Neue Schlüsselwörter. Besondere Methoden.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Iteratoren • Objekte können mit foreach() traversiert werden. • Im Standardfall iteriert foreach() über die Attribute des Objektes.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Iteratoren Interface [ interface Iterator implements Traversable ] { - Constants [0] { } - Static properties [0] { } - Static methods [0] { } - Properties [0] { } - Methods [5] { Method [ abstract public method current ] { } Method [ abstract public method next ] { } Method [ abstract public method key ] { } Method [ abstract public method hasMore ] { } Method [ abstract public method rewind ] { } } }

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Reflection API • PHP 5 bietet eine API für die strukturelle Reflektion (Introspektion) von Klassen, Schnittstellen, Methoden, und Funktionen. • Die Klassen dieser Reflection API implementieren eine __toString()-Methode, mit deren Hilfe man sich schnell einen Blick in "das Innere" des reflektierten Objektes verschaffen kann.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Reflection API

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

Schleichwerbung ;-) • • • • • •

Objektorientierung. Entwurfsmuster. Application Server. Softwareintegration. dpunkt.verlag 2004. ISBN 3-89864-229-1.

"Objektorientierte Programmierung mit PHP 5" Sebastian Bergmann http://www.sebastian-bergmann.de/

More Documents from "Triet"

201 Hop Dong Lien Doanh
April 2020 17
2003-11-15-oop_mit_php_5
December 2019 19
Oop In Php5
December 2019 22
Mysql Triggers
November 2019 32
Password Protection
November 2019 16
Fulltext Search
November 2019 18