Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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.320 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
  • Als Erste(r) kommentieren

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

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

×