Zend Framework 2 feat. MongoDB

  • View
    1.469

  • Download
    2

Embed Size (px)

DESCRIPTION

Lernen Sie das Zusammenspiel von MongoDB und dem Zend Framework 2 anhand eines praktischen Beispiels kennen! Diese Session zeigt, wie Sie mit MongoDB eine der beliebtesten dokumentenorientierten Open-Source-Datenbanken in Ihren ZF2-Projekten unkompliziert einsetzen und welche Fallstricke Sie vermeiden können.

Text of Zend Framework 2 feat. MongoDB

  • 1. Ralf Eggert | Travello GmbHZend Framework 2 feat. MongoDB

2. ber Ralf Eggert Dipl. Wirtschaftsinformatiker (FH) Jahrgang 1972 GF Travello GmbH Buchautor zum ZF1 & ZF2 (AW / Galileo) Kolumnist PHP-Magazin ZF seit 2006 Contributor, Speaker, Trainer, Papa http://www.zendframeworkschulung.de/ 3. Drei Fragen an das Publikum? Wer nutzt das Zend Framework 2? Wer nutzt MongoDB? Wer nutzt ZF2 und MongoDB zusammen? 4. MongoDbQuelle: Kalyanvarma / wikimedia 5. MongoDB ber sich MongoDB (from "humongous") is an opensource document database, and the leading NoSQL database. Written in C++ Quelle: http://www.mongodb.org/ Dokumenten-orientierter Datenspeicher Flexibel, agil und skalierbar Replizierbar und Hochverfgbar Index-Untersttzung fr alle Attribute 6. MongoDB Feature Collections Arrays (beliebige Struktur) Objekte (drfen nur public Eigenschaften haben) BSON (binres JSON) Automatischer Primrschlssel _id Weitere Indizes Viele Client Libraries PHP, Python, JavaScript, Ruby, C++, Java, Perl... 7. Installation Ubuntu MongoDB installieren $ sudo apt-get install mongodb PHP Treiber fr MongoDB installieren $ sudo pecl install mongo PHP Extension hinzufgen $ sudo nano /etc/php5/apache2/php.ini Einfgen bei Extensions: extension=mongo.so Apache2 neu starten Testen mit phpinfo() Abschnitt mongo prfen 8. Installation Windows Treiber herunterladen s3.amazonaws.com/drivers.mongodb.org/php/index.html Entpacken und passenden Treiber ins PHP Extension Verzeichnis von PHP kopieren PHP Extension in php.ini hinzufgen extension=php_mongo.dll Apache2 neu starten Testen mit phpinfo() Abschnitt mongo prfen 9. MongoDB Service / Shell MongoDb Service starten sudo service mongodb start Mongo Shell starten mongo Datenbank auswhlent use customerdb Dokumente aus Collection customers finden db.customers.find() Dokument anlegen db.customers.insert() 10. Zend Framework 2Quelle: Yathin S Krishnappa / wikimedia 11. Zend Framework 2 ber sich Zend Framework 2 is an open source framework for developing web applications and services using PHP 5.3+. Quelle: http://framework.zend.com/about/ Aktuelles Release 2.2.4 Durch Module erweiterbar Erweiterbar durch eigene Features Sicherheit, Performance & Enterprise Ready Groe Community 12. Zend Framework 2 Features Service-Manager Event-Manager Module-Manager Konfiguration, MVC & Formulare Native Untersttzung fr diverse RDMS Keine native Untersttzung fr MongoDb Eigene Modelinfrastruktur fr MongoDb schaffen 13. Installation Beispielprojekt Projekt installieren https://github.com/RalfEggert/ipc2013-mongodb Per git clone oder ZIP Download Composer starten php composer.phar selfupdate php composer.phar install Virtual Host ipc2013.mongodb einrichten Im Browser aufrufen http://ipc2013.mongodb 14. Aufbau Beispielprojekt Modul Application Stellt Startseite, einige Filter und View-Helper bereit Modul MongoDb Adapter fr MongoDb Abstrakte Klassen fr Entitten, Collections, Services Modul Customer Modelinfrastruktur basiert auf Modul MongoDb Controller, Formulare, InputFilter, Validatoren View-Helper und View-Skripte fr Ausgabe 15. ZF2 Modul MongoDbQuelle: Achim Raschka / wikimedia 16. Aufbau MongoDb Modul config module.config.php src MongoDb Collection Db Entity Service autoload_classmap.php Module.php 17. Module.php und Konfiguration Module Klasse Laden der Konfiguration Autoloading Konfiguration Service-Manager 18. MongoDbDbAdapterFactory Konfiguration laden Verbindung zum MongoClient aufbauen Datenbank auswhlen Adapter zurckgeben 19. MongoDbEntityAbstractEntity Wird durch konkrete Entitten erweitert Implementiert ArraySerializableInterface Methode exchangeArray() Methode getArrayCopy() Methode __clone() 20. MongoDbCollectionAbstractCollection Wird durch konkrete Collections erweitert Erwartet MongoDb Adapter / Entitts-Prototyp Methode find() Methode findOne() Methode insert() Methode update() Methode delete() 21. MongoDbServiceAbstractModelService Wird durch konkrete Model-Services erweitert Erwartet Collection Methoden fr Event-Manager Methoden fr Meldungen Abstrakte save() Methode Abstrakte delete() Methode 22. ZF2 Modul CustomerQuelle: Beentree / wikimedia 23. Aufbau Customer Modul config module.config.php src view customer customer Customer autoload_classmap.php Collection Module.php Controller template_map.php Entity Form InputFilter Service Validator View 24. Module.php und Konfiguration Module Klasse Laden der Konfiguration Autoloading Konfiguration Routing Service-Manager Controller Validatoren, Input-Filter, Formulare View-Helper und View-Manager Lnderschlssel 25. Klassen ohne Bezug zu MongoDb Validator zum Validieren von Lnderschlsseln View-Helper zur Ausgabe eines Landes anhand des Lnderschlssels Hierarchische InputFilter fr Adressen- und Kundendaten Fieldset fr Adressendaten Formular fr Kundendaten Nutzt CustomerAddressFieldset 26. Entitten im Customer Modul Erweitern MongoDbEntityAbstractEntity AddressEntity Kapselt Adressdaten Wird von CustomerEntity verwendet CustomerEntity Kapselt weitere Kundendaten Verwendet AddressEntity Primrschlssel _id 27. Collection im Customer Modul Erweitert MongoDbCollectionAbstractCollection Lesen aller Dokumente Lesen eines Dokuments Anlegen von Testdaten Factory 28. Model-Service im Customer Modul Erweitert MongoDbServiceAbstractModelService Konstruktor erwartet Event-Manager CustomerCollection CustomerFilter Methoden zum Lesen Implementation der save() Methode Implementation der delete() Methode Factory 29. Controller im Customer Modul Verwendet CustomerService CustomerForm Einige Aktionen nutzen Post-Redirect-Get-Plugin MongoDb basiertes Backend ist unbekannt Factory 30. Weitere Module?Quelle: jez.atkinson / wikimedia 31. DoctrineMongoODMModule Download https://github.com/doctrine/DoctrineMongoODMModule Installation per Composer Basiert auf Doctrine Doctrine Modul Doctrine ODM Quellen http://www.doctrine-project.org/projects/mongodb-odm.html Stackoverflow Google 32. PhlyMongo Download https://github.com/phly/PhlyMongo Installation per Composer Quelle GitHub README Seit 8 Monaten kein Update 33. Ralf Eggert | Travello GmbHVielen Dank fr Ihre Aufmerksamkeit