PHP 5 Ein Jahr danach Sebastian Bergmann 23. Juni 2005
Wer ich bin
Sebastian Bergmann.
Jahrgang 1978.
Informatikstudent in Bonn.
Committer: PHP, PEAR, Gentoo Linux, ...
Autor von Open Source PHP-Projekten wie PHPUnit oder phpOpenTracker.
Fachautor zu PHP und verwandten Themen.
Wer sind Sie?
Wer von Ihnen programmiert objektorientiert in PHP?
Wer von Ihnen benutzt PHP 5?
Happy Birthday, PHP!
PHP ist 10 Jahre (und 15 Tage) alt.
From: rasmus@io.org (Rasmus Lerdorf) Subject: Announce: Personal Home Page Tools (PHP Tools) Date: 1995/06/08 Message-ID: <3r7pgp$aa1@ionews.io.org>#1/1 X-Deja-AN: 104053006 organization: none newsgroups: comp.infosystems.www.authoring.cgi Announcing the Personal Home Page Tools (PHP Tools) version 1.0. These tools are a set of small tight cgi binaries written in C. They perform a number of functions including: . . . The tools are in the public domain distributed under the GNU Public License. Yes, that means they are free!
Ein Blick zurück
PHP 3
Veröffentlicht am 6. Juni 1998.
Sehr rudimentäre Unterstützung für objektorientierte Programmierung.
Kein Session Management.
PHPLIB
Die vielleicht wichtigste Bibliothek, in PHP geschrieben, für PHP 3.
Entwickelt von Kristian Köhntopp, Ulf Wendel et al. bei der NetUSE AG in Kiel.
Sascha Schumanns Code für die Serialisierung von PHP-Variablen und das Session Management (Bestandteil von PHPLIB) war der De-facto Standard für PHP 3.
Ein Blick zurück
PHP 4
Veröffentlicht am 22. Mai 2000.
Rudimentäre Unterstützung für objektorientierte Programmierung.
Sascha Schumann hat für PHP 4 seinen Code für Serialisierung und Session Management in C als Bestandteil von PHP 4 neu geschrieben.
PEAR
Repository für wiederverwendbare Klassen und Komponenten, die in PHP geschrieben sind.
Infrastruktur (PEAR Installer), um diese Pakete zu installieren und zu verwalten.
Heute
PHP 5
Veröffentlicht am 13. Juli 2004.
Gute Unterstützung für objektorientierte Programmierung.
Sprachmerkmale.
Standard PHP Library (SPL).
Erweiterungen wie DOM und MySQLi bieten OOP APIs.
Gute Unterstützung für XML-Technologien und Webdienste.
PECL
PHP Extension Community Library.
In C geschriebene Erweiterungen für PHP.
Esoterische Erweiterungen werden von PHP nach PECL „verschoben“.
Umgekehrte Richtung möglich, PECL-Erweiterungen können Bestandteil der PHP-Distribution werden.
Ein Blick in die Zukunft
PHP 5.1 (2. Quartal 2005)
Optimierte virtuelle Maschine (VM).
Bis zu 400% bessere Performanz gegenüber PHP 5.0.
PHP Data Objects (PDO)
„Eingebaute“ Datenbankabstraktionsschicht auf API-Ebene.
Einheitliches new PDO(...) anstelle von mysql_connect(...) , pg_connect(....) , ...
Nutzt Leistungsmerkmale der Zend Engine 2 wie die Iterator -Schnittstelle .
Standard PHP Library (SPL)
Standardhierarchie von Exception -Klassen.
Countable -, Subject - und Observer -Schnittstellen
Neue bzw. verbesserte Datumsfunktionen.
XMLReader, neue API für XML-Verarbeitung.
Ein Blick in die Zukunft
PHP 6.0 (1. Quartal 2006)
Vollständige Unicode-Unterstützung.
Basierend auf International Components for Unicode (ICU) von IBM.
Ein Blick in die Zukunft
PEAR 1.4
Veröffentlichung „later this year“.
Wichtigste Aktualisierung der PEAR/PECL-Infrastruktur seit deren Einführung.
Channels.
Mirroring.
Binäre PECL-Pakete.
Neues package.xml 2.0 Format.
Paketabhängigkeiten werden vor dem Download überprüft.
Selbstinstallierendes PEAR aus einer einzigen Datei (dank PHP_Archive).
Representational State Transfer (ReST) für die Client-Server-Kommunikation als (optionaler?) Ersatz für XML-RPC.
Projekte, die PHP 5 nutzen
PHPUnit2
Framework für Unit Tests, basierend auf JUnit.
Phing
Projekt-Build-System, basierend auf Apache Ant.
Creole
Datenbankabstraktionsschicht, basierend auf Java Database Connectivity (JDBC).
Propel
Object-Relational Mapper und Persistenzlösung, basierend auf Apache Torque.
PHPUnit2
Framework für Unit Tests, basierend auf JUnit.
Vollständige Portierung von JUnit 3.8.1.
Portierung von JUnit 4 in Vorbereitung.
Unterstützung für
Code-Coverage-Analysis.
Agile Dokumentation (TestDox).
Unvollständige Tests (junitour).
Mock Objects (in Vorbereitung).
Integration mit Phing.
Automatische Generierung von Testfallklassen.
Logging im XML-Format oder über PEAR::Log.
Installation
pear install PHPUnit2
PHPUnit2
Konventionen
Tests für Klasse Class in Testklasse ClassTest .
Tests in Methoden mit Präfix test .
PHPUnit2
PHPUnit2
PHPUnit2
Phing
Projekt-Build-System, basierend auf Apache Ant.
Leistungsmerkmale
Datei-Transformationen,
e.g. Token-Ersetzungen, XSLT-Transformationen, Smarty-Template-Transformationen
Dateisystemoperationen,
SQL-Ausführung,
CVS- und Subversion-Operationen,
Werkzeuge für die Erstellung von PEAR-Paketen,
Ausführung von PHPUnit2-Tests und Erstellung von Reports.
Datenbankschema DROP TABLE IF EXISTS author; CREATE TABLE author( author_id INTEGER NOT NULL, first_name VARCHAR(128) NOT NULL, last_name VARCHAR(128) NOT NULL, PRIMARY KEY (author_id) ) TYPE=InnoDB; DROP TABLE IF EXISTS publisher; CREATE TABLE publisher( publisher_id INTEGER NOT NULL, name VARCHAR(128) NOT NULL, PRIMARY KEY (publisher_id) ) TYPE=InnoDB; DROP TABLE IF EXISTS book; CREATE TABLE book( book_id INTEGER NOT NULL, title VARCHAR(255) NOT NULL, isbn VARCHAR(24) NOT NULL, author_id INTEGER NOT NULL, publisher_id INTEGER NOT NULL, PRIMARY KEY (book_id), INDEX (author_id), FOREIGN KEY (author_id) REFERENCES author (author_id), INDEX (publisher_id), FOREIGN KEY (publisher_id) REFERENCES publisher (publisher_id) ) TYPE=InnoDB;
Objektmodell
Tabelle author
Abstrakte Basisklasse BaseAuthor .
Methoden wie
getFirstName() oder setFirstName($v) .
Konkrete Klasse Author extends BaseAuthor .
Leer.
Wird nicht überschrieben, wenn BaseAuthor wegen Änderung des Datenmodells neu generiert wird.
Ein neues Buch anlegen
Frontend mit patForms
Fazit
„PHP ist wie die Borg in Star Trek – es fügt die Fertigkeiten anderer den eigenen hinzu, um Perfektion zu erreichen.“ (Kristian Köhntopp)
PHP ist darauf angelegt, beliebige Bibliotheken und neue Funktionen leicht und schnell in der Sprache zur Verfügung zu stellen.
Mit den neuen Sprachmerkmalen von Version 5 ist PHP nun in der Lage, auch Paradigmen zu assimilieren.
0 comments
Post a comment