Ralf Eggert | Travello GmbH

Zend Framework 2 feat. MongoDB
Über Ralf Eggert
• Dipl. Wirtschaftsinformatiker (FH)
• Jahrgang 1972
• GF Travello GmbH
• Buchautor zum ZF1 & ZF2 (AW / G...
Drei Fragen an das Publikum?
• Wer nutzt das Zend Framework 2?
• Wer nutzt MongoDB?
• Wer nutzt ZF2 und MongoDB zusammen?
MongoDb

Quelle: Kalyanvarma / wikimedia
MongoDB über sich
• »MongoDB (from "humongous") is an opensource document database, and the leading
NoSQL database. Writte...
MongoDB Feature
• Collections
– Arrays (beliebige Struktur)
– Objekte (dürfen nur public Eigenschaften haben)

• BSON (bin...
Installation Ubuntu
• MongoDB installieren
– $ sudo apt-get install mongodb

• PHP Treiber für MongoDB installieren
– $ su...
Installation Windows
• Treiber herunterladen
– s3.amazonaws.com/drivers.mongodb.org/php/index.html

• Entpacken und passen...
MongoDB Service / Shell
• MongoDb Service starten
– sudo service mongodb start

• Mongo Shell starten
– mongo

• Datenbank...
Zend Framework 2

Quelle: Yathin S Krishnappa / wikimedia
Zend Framework 2 über sich
• »Zend Framework 2 is an open source
framework for developing web applications and
services us...
Zend Framework 2 Features
• Service-Manager
• Event-Manager
• Module-Manager
• Konfiguration, MVC & Formulare
• Native Unt...
Installation Beispielprojekt
• Projekt installieren
– https://github.com/RalfEggert/ipc2013-mongodb

– Per git clone oder ...
Aufbau Beispielprojekt
• Modul Application
– Stellt Startseite, einige Filter und View-Helper bereit

• Modul MongoDb
– Ad...
ZF2 Modul MongoDb

Quelle: Achim Raschka / wikimedia
Aufbau MongoDb Modul
• config
– module.config.php

• src
– MongoDb
• Collection
• Db
• Entity
• Service

• autoload_classm...
Module.php und Konfiguration
• Module Klasse
– Laden der Konfiguration
– Autoloading

• Konfiguration
– Service-Manager
MongoDbDbAdapterFactory
• Konfiguration laden
• Verbindung zum MongoClient aufbauen
• Datenbank auswählen
• »Adapter« zurü...
MongoDbEntityAbstractEntity
• Wird durch konkrete Entitäten erweitert
• Implementiert ArraySerializableInterface
• Methode...
MongoDbCollectionAbstractCollection
• Wird durch konkrete Collections erweitert
• Erwartet MongoDb Adapter / Entitäts-Prot...
MongoDbServiceAbstractModelService
• Wird durch konkrete Model-Services erweitert
• Erwartet Collection
• Methoden für Eve...
ZF2 Modul Customer

Quelle: Beentree / wikimedia
Aufbau Customer Modul
• config
– module.config.php

• src

• view
– customer
• customer

– Customer

• autoload_classmap.p...
Module.php und Konfiguration
• Module Klasse
– Laden der Konfiguration
– Autoloading

• Konfiguration
– Routing
– Service-...
Klassen ohne Bezug zu MongoDb
• Validator zum Validieren von Länderschlüsseln
• View-Helper zur Ausgabe eines Landes anhan...
Entitäten im Customer Modul
• Erweitern MongoDbEntityAbstractEntity
• AddressEntity
– Kapselt Adressdaten
– Wird von Custo...
Collection im Customer Modul
• Erweitert MongoDbCollectionAbstractCollection
• Lesen aller Dokumente
• Lesen eines Dokumen...
Model-Service im Customer Modul
• Erweitert MongoDbServiceAbstractModelService
• Konstruktor erwartet
– Event-Manager
– Cu...
Controller im Customer Modul
• Verwendet
– CustomerService
– CustomerForm

• Einige Aktionen nutzen Post-Redirect-Get-Plug...
Weitere Module?

Quelle: jez.atkinson / wikimedia
DoctrineMongoODMModule
• Download
– https://github.com/doctrine/DoctrineMongoODMModule

• Installation per Composer
• Basi...
PhlyMongo
• Download
– https://github.com/phly/PhlyMongo

• Installation per Composer
• Quelle
– GitHub README

• Seit 8 M...
Ralf Eggert | Travello GmbH

Vielen Dank für Ihre Aufmerksamkeit
Nächste SlideShare
Wird geladen in …5
×

Zend Framework 2 feat. MongoDB

2.297 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.297
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
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

×