SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
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 / Galileo)
• Kolumnist PHP-Magazin
• ZF seit 2006
• Contributor, Speaker, Trainer, Papa
• http://www.zendframeworkschulung.de/
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. 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
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...
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
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
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()
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 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
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
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
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
ZF2 Modul MongoDb

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

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

• autoload_classmap.php
• Module.php
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ückgeben
MongoDbEntityAbstractEntity
• Wird durch konkrete Entitäten erweitert
• Implementiert ArraySerializableInterface
• Methode exchangeArray()
• Methode getArrayCopy()
• Methode __clone()
MongoDbCollectionAbstractCollection
• Wird durch konkrete Collections erweitert
• Erwartet MongoDb Adapter / Entitäts-Prototyp
• Methode find()
• Methode findOne()
• Methode insert()
• Methode update()
• Methode delete()
MongoDbServiceAbstractModelService
• Wird durch konkrete Model-Services erweitert
• Erwartet Collection
• Methoden für Event-Manager
• Methoden für Meldungen
• Abstrakte save() Methode
• Abstrakte delete() Methode
ZF2 Modul Customer

Quelle: Beentree / wikimedia
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
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
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
Entitäten im Customer Modul
• Erweitern MongoDbEntityAbstractEntity
• AddressEntity
– Kapselt Adressdaten
– Wird von CustomerEntity verwendet

• CustomerEntity
– Kapselt weitere Kundendaten
– Verwendet AddressEntity
– Primärschlüssel _id
Collection im Customer Modul
• Erweitert MongoDbCollectionAbstractCollection
• Lesen aller Dokumente
• Lesen eines Dokuments
• Anlegen von Testdaten
• Factory
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
Controller im Customer Modul
• Verwendet
– CustomerService
– CustomerForm

• Einige Aktionen nutzen Post-Redirect-Get-Plugin
• MongoDb basiertes Backend ist unbekannt
• Factory
Weitere Module?

Quelle: jez.atkinson / wikimedia
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
PhlyMongo
• Download
– https://github.com/phly/PhlyMongo

• Installation per Composer
• Quelle
– GitHub README

• Seit 8 Monaten kein Update
Ralf Eggert | Travello GmbH

Vielen Dank für Ihre Aufmerksamkeit

Mais conteúdo relacionado

Mais procurados

Morphia, Spring Data & Co
Morphia, Spring Data & CoMorphia, Spring Data & Co
Morphia, Spring Data & CoTobias Trelle
 
MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenTobias Trelle
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLFromDual GmbH
 
MongoDB - Big Data mit Open Source
MongoDB - Big Data mit Open SourceMongoDB - Big Data mit Open Source
MongoDB - Big Data mit Open SourceB1 Systems GmbH
 
MongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererMongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererUwe Printz
 
Zend Framework 2 kommt bald - und jetzt?
Zend Framework 2 kommt bald - und jetzt?Zend Framework 2 kommt bald - und jetzt?
Zend Framework 2 kommt bald - und jetzt?Ralf Eggert
 
MySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterMySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterFromDual GmbH
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLFromDual GmbH
 
MySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLMySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLFromDual GmbH
 
Javascript done right
Javascript done rightJavascript done right
Javascript done rightDirk Ginader
 

Mais procurados (14)

Morphia, Spring Data & Co
Morphia, Spring Data & CoMorphia, Spring Data & Co
Morphia, Spring Data & Co
 
MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwalten
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQL
 
GWT
GWTGWT
GWT
 
MongoDB - Big Data mit Open Source
MongoDB - Big Data mit Open SourceMongoDB - Big Data mit Open Source
MongoDB - Big Data mit Open Source
 
MongoDB für Java-Programmierer
MongoDB für Java-ProgrammiererMongoDB für Java-Programmierer
MongoDB für Java-Programmierer
 
Zend Framework 2 kommt bald - und jetzt?
Zend Framework 2 kommt bald - und jetzt?Zend Framework 2 kommt bald - und jetzt?
Zend Framework 2 kommt bald - und jetzt?
 
MySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterMySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und Cluster
 
Datenbankoptimierung
DatenbankoptimierungDatenbankoptimierung
Datenbankoptimierung
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQL
 
Drupal und twig
Drupal und twigDrupal und twig
Drupal und twig
 
MySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLMySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQL
 
Javascript done right
Javascript done rightJavascript done right
Javascript done right
 
NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 

Semelhante a Zend Framework 2 feat. MongoDB

Zend Framework 2 - Best Practices
Zend Framework 2 - Best PracticesZend Framework 2 - Best Practices
Zend Framework 2 - Best PracticesRalf Eggert
 
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)Ralf Eggert
 
Drupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurtdasjo
 
Schau, Mutti, keine Programmierzeile
Schau, Mutti, keine ProgrammierzeileSchau, Mutti, keine Programmierzeile
Schau, Mutti, keine Programmierzeilerokr
 
Unit Testing einer Zend-Framework 2 Anwendung
Unit Testing einer Zend-Framework 2 AnwendungUnit Testing einer Zend-Framework 2 Anwendung
Unit Testing einer Zend-Framework 2 AnwendungRalf Eggert
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...Peter Hecker
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGTorsten Kleiber
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
 
Zend Framework 2.0
Zend Framework 2.0Zend Framework 2.0
Zend Framework 2.0Ralf Eggert
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Community ITmitte.de
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDIadesso AG
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...Peter Hecker
 
Tipps zur Performanceoptimierung für Liferay Portal
Tipps zur  Performanceoptimierung für Liferay PortalTipps zur  Performanceoptimierung für Liferay Portal
Tipps zur Performanceoptimierung für Liferay PortalStefan Hilpp
 
AdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsAdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsChristoph Adler
 
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScriptJSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScriptOPEN KNOWLEDGE GmbH
 
WPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF RundumschlagWPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF RundumschlagHendrik Lösch
 

Semelhante a Zend Framework 2 feat. MongoDB (20)

Zend Framework 2 - Best Practices
Zend Framework 2 - Best PracticesZend Framework 2 - Best Practices
Zend Framework 2 - Best Practices
 
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
 
Drupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurt
 
Schau, Mutti, keine Programmierzeile
Schau, Mutti, keine ProgrammierzeileSchau, Mutti, keine Programmierzeile
Schau, Mutti, keine Programmierzeile
 
JSF vs. GWT? JSF und GWT!
JSF vs. GWT? JSF und GWT!JSF vs. GWT? JSF und GWT!
JSF vs. GWT? JSF und GWT!
 
Unit Testing einer Zend-Framework 2 Anwendung
Unit Testing einer Zend-Framework 2 AnwendungUnit Testing einer Zend-Framework 2 Anwendung
Unit Testing einer Zend-Framework 2 Anwendung
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
 
#PinkDB DataVault
#PinkDB DataVault#PinkDB DataVault
#PinkDB DataVault
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der Praxis
 
Zend Framework 2.0
Zend Framework 2.0Zend Framework 2.0
Zend Framework 2.0
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
Tipps zur Performanceoptimierung für Liferay Portal
Tipps zur  Performanceoptimierung für Liferay PortalTipps zur  Performanceoptimierung für Liferay Portal
Tipps zur Performanceoptimierung für Liferay Portal
 
AdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsAdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsights
 
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScriptJSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript
 
MDSD Herausforderung: Entwicklungsmethodik und technisches Umfeld
MDSD Herausforderung: Entwicklungsmethodik und technisches UmfeldMDSD Herausforderung: Entwicklungsmethodik und technisches Umfeld
MDSD Herausforderung: Entwicklungsmethodik und technisches Umfeld
 
WPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF RundumschlagWPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF Rundumschlag
 

Mais de Ralf Eggert

ChatGPT: unser täglich' Bot gib uns heute
ChatGPT: unser täglich' Bot gib uns heuteChatGPT: unser täglich' Bot gib uns heute
ChatGPT: unser täglich' Bot gib uns heuteRalf Eggert
 
Der ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 EditionDer ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 EditionRalf Eggert
 
PHP Module als Rundum-Sorglos-Pakete entwickeln
PHP Module als Rundum-Sorglos-Pakete entwickelnPHP Module als Rundum-Sorglos-Pakete entwickeln
PHP Module als Rundum-Sorglos-Pakete entwickelnRalf Eggert
 
Alexa, what's next?
Alexa, what's next?Alexa, what's next?
Alexa, what's next?Ralf Eggert
 
Alexa, wohin geht die Reise
Alexa, wohin geht die ReiseAlexa, wohin geht die Reise
Alexa, wohin geht die ReiseRalf Eggert
 
8. Hamburg Voice Interface Meetup
8. Hamburg Voice Interface Meetup8. Hamburg Voice Interface Meetup
8. Hamburg Voice Interface MeetupRalf Eggert
 
Alexa Skill Maintenance
Alexa Skill MaintenanceAlexa Skill Maintenance
Alexa Skill MaintenanceRalf Eggert
 
Vom Zend Framework zu Laminas
Vom Zend Framework zu LaminasVom Zend Framework zu Laminas
Vom Zend Framework zu LaminasRalf Eggert
 
Alexa Skills und PHP? Passt das zusammen?
Alexa Skills und PHP? Passt das zusammen?Alexa Skills und PHP? Passt das zusammen?
Alexa Skills und PHP? Passt das zusammen?Ralf Eggert
 
Mit Jovo von 0 auf 100
Mit Jovo von 0 auf 100Mit Jovo von 0 auf 100
Mit Jovo von 0 auf 100Ralf Eggert
 
Vom Zend Framework zu Laminas
Vom Zend Framework zu LaminasVom Zend Framework zu Laminas
Vom Zend Framework zu LaminasRalf Eggert
 
Alexa for Hospitality
Alexa for HospitalityAlexa for Hospitality
Alexa for HospitalityRalf Eggert
 
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...Ralf Eggert
 
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenFortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenRalf Eggert
 
Die sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice ProjekteDie sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice ProjekteRalf Eggert
 
Künstliche Intelligenz – Traum und Wirklichkeit
Künstliche Intelligenz – Traum und WirklichkeitKünstliche Intelligenz – Traum und Wirklichkeit
Künstliche Intelligenz – Traum und WirklichkeitRalf Eggert
 
Multi-Modal Voice Development with Amazon Alexa
Multi-Modal Voice Development with Amazon AlexaMulti-Modal Voice Development with Amazon Alexa
Multi-Modal Voice Development with Amazon AlexaRalf Eggert
 
Mein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein BackendMein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein BackendRalf Eggert
 
Zend/Expressive 3 – The Next Generation
Zend/Expressive 3 – The Next GenerationZend/Expressive 3 – The Next Generation
Zend/Expressive 3 – The Next GenerationRalf Eggert
 

Mais de Ralf Eggert (20)

ChatGPT: unser täglich' Bot gib uns heute
ChatGPT: unser täglich' Bot gib uns heuteChatGPT: unser täglich' Bot gib uns heute
ChatGPT: unser täglich' Bot gib uns heute
 
Der ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 EditionDer ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 Edition
 
PHP Module als Rundum-Sorglos-Pakete entwickeln
PHP Module als Rundum-Sorglos-Pakete entwickelnPHP Module als Rundum-Sorglos-Pakete entwickeln
PHP Module als Rundum-Sorglos-Pakete entwickeln
 
Alexa, what's next?
Alexa, what's next?Alexa, what's next?
Alexa, what's next?
 
Alexa, wohin geht die Reise
Alexa, wohin geht die ReiseAlexa, wohin geht die Reise
Alexa, wohin geht die Reise
 
8. Hamburg Voice Interface Meetup
8. Hamburg Voice Interface Meetup8. Hamburg Voice Interface Meetup
8. Hamburg Voice Interface Meetup
 
Welcome Bixby
Welcome BixbyWelcome Bixby
Welcome Bixby
 
Alexa Skill Maintenance
Alexa Skill MaintenanceAlexa Skill Maintenance
Alexa Skill Maintenance
 
Vom Zend Framework zu Laminas
Vom Zend Framework zu LaminasVom Zend Framework zu Laminas
Vom Zend Framework zu Laminas
 
Alexa Skills und PHP? Passt das zusammen?
Alexa Skills und PHP? Passt das zusammen?Alexa Skills und PHP? Passt das zusammen?
Alexa Skills und PHP? Passt das zusammen?
 
Mit Jovo von 0 auf 100
Mit Jovo von 0 auf 100Mit Jovo von 0 auf 100
Mit Jovo von 0 auf 100
 
Vom Zend Framework zu Laminas
Vom Zend Framework zu LaminasVom Zend Framework zu Laminas
Vom Zend Framework zu Laminas
 
Alexa for Hospitality
Alexa for HospitalityAlexa for Hospitality
Alexa for Hospitality
 
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
 
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenFortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
 
Die sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice ProjekteDie sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice Projekte
 
Künstliche Intelligenz – Traum und Wirklichkeit
Künstliche Intelligenz – Traum und WirklichkeitKünstliche Intelligenz – Traum und Wirklichkeit
Künstliche Intelligenz – Traum und Wirklichkeit
 
Multi-Modal Voice Development with Amazon Alexa
Multi-Modal Voice Development with Amazon AlexaMulti-Modal Voice Development with Amazon Alexa
Multi-Modal Voice Development with Amazon Alexa
 
Mein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein BackendMein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein Backend
 
Zend/Expressive 3 – The Next Generation
Zend/Expressive 3 – The Next GenerationZend/Expressive 3 – The Next Generation
Zend/Expressive 3 – The Next Generation
 

Zend Framework 2 feat. MongoDB

  • 1. Ralf Eggert | Travello GmbH Zend 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?
  • 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. 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. 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. 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. 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. Zend Framework 2 Quelle: 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 • Große Community
  • 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. 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 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. ZF2 Modul MongoDb Quelle: 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 auswählen • »Adapter« zurückgeben
  • 19. MongoDbEntityAbstractEntity • Wird durch konkrete Entitäten erweitert • Implementiert ArraySerializableInterface • Methode exchangeArray() • Methode getArrayCopy() • Methode __clone()
  • 20. MongoDbCollectionAbstractCollection • Wird durch konkrete Collections erweitert • Erwartet MongoDb Adapter / Entitäts-Prototyp • Methode find() • Methode findOne() • Methode insert() • Methode update() • Methode delete()
  • 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. ZF2 Modul Customer Quelle: 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 – Länderschlüssel
  • 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. 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. 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
  • 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 GmbH Vielen Dank für Ihre Aufmerksamkeit