Zend Framework 2 feat. MongoDB

2.156 Aufrufe

Veröffentlicht am

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.

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
2.156
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
5
Aktionen
Geteilt
0
Downloads
3
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Zend Framework 2 feat. MongoDB

  1. 1. Ralf Eggert | Travello GmbH Zend Framework 2 feat. MongoDB
  2. 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. 3. Drei Fragen an das Publikum? • Wer nutzt das Zend Framework 2? • Wer nutzt MongoDB? • Wer nutzt ZF2 und MongoDB zusammen?
  4. 4. MongoDb Quelle: Kalyanvarma / wikimedia
  5. 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 Hochverfügbar • Index-Unterstützung für alle Attribute
  6. 6. MongoDB Feature • Collections – Arrays (beliebige Struktur) – Objekte (dürfen nur public Eigenschaften haben) • BSON (binäres JSON) • Automatischer Primärschlüssel _id • Weitere Indizes • Viele Client Libraries – PHP, Python, JavaScript, Ruby, C++, Java, Perl...
  7. 7. Installation Ubuntu • MongoDB installieren – $ sudo apt-get install mongodb • PHP Treiber für MongoDB installieren – $ sudo pecl install mongo • PHP Extension hinzufügen – $ sudo nano /etc/php5/apache2/php.ini – Einfügen bei Extensions: extension=mongo.so • Apache2 neu starten • Testen mit phpinfo() – Abschnitt mongo prüfen
  8. 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 hinzufügen – extension=php_mongo.dll • Apache2 neu starten • Testen mit phpinfo() – Abschnitt mongo prüfen
  9. 9. MongoDB Service / Shell • MongoDb Service starten – sudo service mongodb start • Mongo Shell starten – mongo • Datenbank auswählent – use customerdb • Dokumente aus Collection customers finden – db.customers.find() • Dokument anlegen – db.customers.insert()
  10. 10. Zend Framework 2 Quelle: Yathin S Krishnappa / wikimedia
  11. 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 • Große Community
  12. 12. Zend Framework 2 Features • Service-Manager • Event-Manager • Module-Manager • Konfiguration, MVC & Formulare • Native Unterstützung für diverse RDMS • Keine native Unterstützung für MongoDb • Eigene Modelinfrastruktur für MongoDb schaffen
  13. 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. 14. Aufbau Beispielprojekt • Modul Application – Stellt Startseite, einige Filter und View-Helper bereit • Modul MongoDb – Adapter für MongoDb – Abstrakte Klassen für Entitäten, Collections, Services • Modul Customer – Modelinfrastruktur basiert auf Modul MongoDb – Controller, Formulare, InputFilter, Validatoren – View-Helper und View-Skripte für Ausgabe
  15. 15. ZF2 Modul MongoDb Quelle: Achim Raschka / wikimedia
  16. 16. Aufbau MongoDb Modul • config – module.config.php • src – MongoDb • Collection • Db • Entity • Service • autoload_classmap.php • Module.php
  17. 17. Module.php und Konfiguration • Module Klasse – Laden der Konfiguration – Autoloading • Konfiguration – Service-Manager
  18. 18. MongoDbDbAdapterFactory • Konfiguration laden • Verbindung zum MongoClient aufbauen • Datenbank auswählen • »Adapter« zurückgeben
  19. 19. MongoDbEntityAbstractEntity • Wird durch konkrete Entitäten erweitert • Implementiert ArraySerializableInterface • Methode exchangeArray() • Methode getArrayCopy() • Methode __clone()
  20. 20. MongoDbCollectionAbstractCollection • Wird durch konkrete Collections erweitert • Erwartet MongoDb Adapter / Entitäts-Prototyp • Methode find() • Methode findOne() • Methode insert() • Methode update() • Methode delete()
  21. 21. MongoDbServiceAbstractModelService • Wird durch konkrete Model-Services erweitert • Erwartet Collection • Methoden für Event-Manager • Methoden für Meldungen • Abstrakte save() Methode • Abstrakte delete() Methode
  22. 22. ZF2 Modul Customer Quelle: Beentree / wikimedia
  23. 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. 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 – Länderschlüssel
  25. 25. Klassen ohne Bezug zu MongoDb • Validator zum Validieren von Länderschlüsseln • View-Helper zur Ausgabe eines Landes anhand des Länderschlüssels • Hierarchische InputFilter für Adressen- und Kundendaten • Fieldset für Adressendaten • Formular für Kundendaten – Nutzt CustomerAddressFieldset
  26. 26. Entitäten im Customer Modul • Erweitern MongoDbEntityAbstractEntity • AddressEntity – Kapselt Adressdaten – Wird von CustomerEntity verwendet • CustomerEntity – Kapselt weitere Kundendaten – Verwendet AddressEntity – Primärschlüssel _id
  27. 27. Collection im Customer Modul • Erweitert MongoDbCollectionAbstractCollection • Lesen aller Dokumente • Lesen eines Dokuments • Anlegen von Testdaten • Factory
  28. 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. 29. Controller im Customer Modul • Verwendet – CustomerService – CustomerForm • Einige Aktionen nutzen Post-Redirect-Get-Plugin • MongoDb basiertes Backend ist unbekannt • Factory
  30. 30. Weitere Module? Quelle: jez.atkinson / wikimedia
  31. 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. 32. PhlyMongo • Download – https://github.com/phly/PhlyMongo • Installation per Composer • Quelle – GitHub README • Seit 8 Monaten kein Update
  33. 33. Ralf Eggert | Travello GmbH Vielen Dank für Ihre Aufmerksamkeit

×