Propel

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

    1 Favorite

    Propel - Presentation Transcript

    1. Propel Objekt-Relationales Mapping mit PHP 5 Sebastian Bergmann 9. November 2005
    2. Propel, Agavi, ... oder: Ein Ausflug in die aufregende Welt der Code-Generierung Sebastian Bergmann 9. November 2005
    3. 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.
    4. Wer sind Sie?
      • Welche Erfahrungen haben Sie bislang mit PHP gesammelt?
        • OOP?
        • PHP 5?
        • ORM?
          • Propel?
        • Agavi?
    5. 10 Jahre PHP – PHP 5.1
      • Gute Unterstützung für objektorientierte Programmierung.
        • Sprachmerkmale.
        • Standard PHP Library (SPL).
        • Erweiterungen bieten OOP APIs.
          • DOM, MySQLi, PDO, SOAP, ...
      • Gute Unterstützung für XML-Technologien und Webdienste.
        • DOM, SAX, SimpleXML, XMLReader, XSLT, SOAP, XML-RPC, ...
      • Frameworks und Werkzeuge
        • PHPUnit2, Phing, Propel, Agavi, ...
    6. 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.
    7. 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 mit
        • pear install --alldeps Log
        • pear install http://phing.info/pear/phing-current.tgz
        • pear install http://propel.phpdb.org/pear/propel_runtime-current.tgz
        • pear install http://propel.phpdb.org/pear/propel_generator-current.tgz
    8. Datenmodell (ER)
    9. Datenmodell (XML)
    10. <database>
    11. <table>
    12. <table>
    13. <column>
    14. <column>
    15. 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>
    16. Propel Generator
    17. Datenbankschema DROP TABLE IF EXISTS author; CREATE TABLE author( author_id INTEGER NOT NULL COMMENT 'Autor-ID', first_name VARCHAR(128) NOT NULL COMMENT 'Autor Vorname', last_name VARCHAR(128) NOT NULL COMMENT 'Autor Nachname', PRIMARY KEY (author_id) ) TYPE=InnoDB COMMENT='Autor-Tabelle'; DROP TABLE IF EXISTS publisher; CREATE TABLE publisher( publisher_id INTEGER NOT NULL COMMENT 'Verlag-ID', name VARCHAR(128) NOT NULL COMMENT 'Verlag-Name', PRIMARY KEY (publisher_id) ) TYPE=InnoDB COMMENT='Verlag-Tabelle'; DROP TABLE IF EXISTS book; CREATE TABLE book( book_id INTEGER NOT NULL COMMENT 'Buch-ID', title VARCHAR(255) NOT NULL COMMENT 'Buch-Titel', isbn VARCHAR(24) NOT NULL COMMENT 'ISBN-Nummer', author_id INTEGER NOT NULL COMMENT 'Fremdschlüssel Autor', publisher_id INTEGER NOT NULL COMMENT 'Fremdschlüssel Verlag', 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 COMMENT='Buch-Tabelle';
    18. 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.
    19. Ein neues Buch anlegen
    20. Den Namen eines Autors ändern
    21. Ein Buch löschen
    22. Criteria
    23. Einfache Suche
    24. Verknüpfte Suche
    25. Frontend mit patForms
    26. Agavi
      • Framework für Web-Anwendungen mit PHP 5.
        • Model-View-Controller.
        • Werkzeug erzeugt Grundgerüst der Web-Anwendung durch Code-Generierung.
          • Ähnlich wie Ruby on Rails.
      • Benutzt Phing.
      • Kann Propel als Model benutzen.
      • Installation
        • pear install http://propel.phpdb.org/pear/propel_runtime-current.tgz
        • pear install http://propel.phpdb.org/pear/propel_generator-current.tgz
    27. Agavi
    28. Agavi und Propel
    29. 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.
    30. 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.
    31. 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.
    32. Werbung
      • dpunkt.verlag.
      • ISBN 3-89864-229-1.
    33. License
      • These slides are available under the Creative Commons Attribution-NonCommercial-NoDerivs 2.5 license.
      • You are free to copy, distribute, display, and perform the work under the following conditions:
        • Attribution: You must attribute the work in the manner specified by the author or licensor.
        • 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 copyright holder.
      • Your fair use and other rights are in no way affected by the above.
      „ Propel: Objekt-Relationales Mapping mit PHP 5“ Sebastian Bergmann http://www.sebastian-bergmann.de/talks/

    + Sebastian BergmannSebastian Bergmann, 4 years ago

    custom

    3854 views, 1 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 3854
      • 3854 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • 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