PHP 5 - Ein Jahr danach

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    PHP 5 - Ein Jahr danach - Presentation Transcript

    1. PHP 5 Ein Jahr danach Sebastian Bergmann 23. Juni 2005
    2. 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.
    3. Wer sind Sie?
      • Wer von Ihnen programmiert objektorientiert in PHP?
      • Wer von Ihnen benutzt PHP 5?
    4. 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!
    5. 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.
    6. 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.
    7. 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.
    8. 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.
    9. 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.
    10. 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.
    11. 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.
    12. 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
    13. PHPUnit2
      • Konventionen
        • Tests für Klasse Class in Testklasse ClassTest .
        • Tests in Methoden mit Präfix test .
    14. PHPUnit2
    15. PHPUnit2
    16. PHPUnit2
    17. 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.
      • Installation
        • pear install http://phing.info/pear/phing-current.tgz
    18. Phing <?xml version=&quot;1.0&quot;?> <project name=&quot;FooBar&quot; default=&quot;dist&quot; basedir=&quot;.&quot;> <target name=&quot;prepare&quot;> <echo msg=&quot;Preparing build...&quot; /> <mkdir dir=&quot;./build&quot; /> </target> <target name=&quot;build&quot; depends=&quot;prepare&quot;> <echo>Building...</echo> <copy file=&quot;./src/File.php&quot; to=&quot;./build/File.php&quot;/> <copy file=&quot;./src/File2.php&quot; to=&quot;./build/File2.php&quot;/> </target> <target name=&quot;dist&quot; depends=&quot;build&quot;> <echo message=&quot;Creating archive...&quot; /> <tar outfile=&quot;furbee.tar.gz&quot; basedir=&quot;./build&quot;/> </target> <target name=&quot;clean&quot;> <echo msg=&quot;Cleaning up...&quot;/> <delete file=&quot;./build&quot;/> </target> </project>
    19. Datenbankabstraktion
      • Soll eine Anwendung mit unterschiedlichen Datenbankmanagementsystemen arbeiten können, so wird eine Abstraktion von der Datenbank benötigt.
      • Was abstrahiert werden muss:
        • Unterschiedliche PHP-APIs für die Datenbanken.
          • „non-problem“ mit PHP 5.1 und PDO.
        • Unterschiede bezüglich der Implementierung des SQL-Standards.
    20. Creole
      • Creole ist eine an Java Database Connectivity (JDBC) angelehnte Datenbankabstraktions-Lösung.
        • Objektorientiert.
        • Für PHP 5.
      • Installation
        • pear install http://creole.phpdb.org/pear/creole-current.tgz
        • pear install http://creole.phpdb.org/pear/jargon-current.tgz
    21. Creole
    22. Creole
    23. Creole
    24. Objekt-Relationales Mapping
      • Abbildung von Klassen in einer relationalen Datenbank.
        • Speichern von Objekten in einer Datenbank.
        • Kapseln von Datenbankinhalten durch Objekte.
      • Ein objekt-relationaler Mapper dient als Brücke zwischen der Datenbank und den Klassen der Anwendung.
        • Der Programmierer muss keine SQL-Anfragen formulieren.
        • Bei einer Änderung des Datenbankschemas werden die entsprechenden Klassen automatisch angepasst.
        • Bei einer Migration auf ein anderes RDBMS muss lediglich eine Konfigurationsdatei angepasst werden.
    25. Propel
      • Propel ist eine solche Brücke für PHP 5.
        • Angelehnt an Apache Torque (Java).
        • Basierend auf Creole und Phing.
      • Zwei Komponenten
        • Propel Generator
          • Eingabe: XML-Spezifikation des Datenmodells.
          • Ausgabe: Datenbankschema und PHP-Klassen.
        • Propel Runtime
          • Laufzeitumgebung.
          • Grundlage für die Verwendung der durch den Propel Generator erzeugten PHP-Klassen.
      • Installation
        • pear install http://propel.phpdb.org/pear/propel_runtime-current.tgz
        • pear install http://propel.phpdb.org/pear/propel_generator-current.tgz
    26. Datenmodell <?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; standalone=&quot;no&quot;?> <database name=&quot;books&quot; defaultIdMethod=&quot;native&quot;> <table name=&quot;author&quot;> <column name=&quot;author_id&quot; required=&quot;true&quot; primaryKey=&quot;true&quot; type=&quot;INTEGER&quot;/> <column name=&quot;first_name&quot; required=&quot;true&quot; type=&quot;VARCHAR&quot; size=&quot;128&quot;/> <column name=&quot;last_name&quot; required=&quot;true&quot; type=&quot;VARCHAR&quot; size=&quot;128&quot;/> </table> <table name=&quot;publisher&quot;> <column name=&quot;publisher_id&quot; required=&quot;true&quot; primaryKey=&quot;true&quot; type=&quot;INTEGER&quot;/> <column name=&quot;name&quot; required=&quot;true&quot; type=&quot;VARCHAR&quot; size=&quot;128&quot;/> </table> <table name=&quot;book&quot;> <column name=&quot;book_id&quot; required=&quot;true&quot; primaryKey=&quot;true&quot; type=&quot;INTEGER&quot;/> <column name=&quot;title&quot; required=&quot;true&quot; type=&quot;VARCHAR&quot; size=&quot;255&quot;/> <column name=&quot;isbn&quot; required=&quot;true&quot; type=&quot;VARCHAR&quot; size=&quot;24&quot;/> <column name=&quot;author_id&quot; required=&quot;true&quot; type=&quot;INTEGER&quot;/> <column name=&quot;publisher_id&quot; required=&quot;true&quot; type=&quot;INTEGER&quot;/> <foreign-key foreignTable=&quot;author&quot;> <reference local=&quot;author_id&quot; foreign=&quot;author_id&quot;/> </foreign-key> <foreign-key foreignTable=&quot;publisher&quot;> <reference local=&quot;publisher_id&quot; foreign=&quot;publisher_id&quot;/> </foreign-key> </table> </database>
    27. Objektspeicher <?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?> <config> <log> <ident>propel-books</ident> <level>7</level> </log> <propel> <datasources default=&quot;books&quot;> <datasource id=&quot;books&quot;> <adapter>mysql</adapter> <connection> <phptype>mysql</phptype> <hostspec>localhost</hostspec> <database>books</database> <username>root</username> <password></password> </connection> </datasource> </datasources> </propel> </config>
    28. Propel Generator propel-gen /home/sb/books
    29. 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;
    30. 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.
    31. Ein neues Buch anlegen
    32. Frontend mit patForms
    33. 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.
    34. Fazit
      • Java
        • Schlanker Sprachkern, umfangreiche Standardbibliothek (Java API).
          • „lean core, rich library“
        • Eher werkzeuggestützter Ansatz bei der Entwicklung.
          • Code-Generierung, Frameworks, ...
      • PHP
        • Viele Convenience-Funktionen.
          • Auch periphere Funktionalität wird über Bibliotheken und native Funktionen integriert.
          • „rich core, lean infrastructure“
        • Unterstützt in Version 5 auch den werkzeuggestützten Ansatz.
    35. Fazit
      • Entwicklergestützter Ansatz
        • Beispiel PDO und Session Management.
          • Datenbankabstraktion und Session Management als Bestandteil des Interpreters.
      • Werkzeuggestützter Ansatz
        • Beispiel Propel.
          • Abstraktion / Integration wird über Code-Generierung ermöglicht.
          • Die Anwendung wird auf der Ebene des Werkzeugs mit dem Werkzeug manipuliert.
        • License
      • These slides are available under the Creative Commons Attribution-NoDerivs-NonCommercial 2.0 license.
      • You are free to copy, distribute, display, and perform the work under the following conditions:
        • Attribution: You must give the original author credit.
        • Noncommercial: You may not use this work for commercial purposes.
        • No Derivative Works: You may not alter, transform, or build upon this work.
        • For any reuse or distribution, you must make clear to others the license terms of this work.
        • Any of these conditions can be waived if you get permission from the author.
      • Your fair use and other rights are in no way affected by the above.
      „ PHP 5 – Ein Jahr danach“ Sebastian Bergmann http://www.sebastian-bergmann.de/de/talks.php

    + Sebastian BergmannSebastian Bergmann, 4 years ago

    custom

    2114 views, 0 favs, 0 embeds more stats

    More info about this document

    CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

    Go to text version

    • Total Views 2114
      • 2114 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories