3 Stimmen

Zend Framework: Wie konstruiert man ein einfaches "Data Mapper" Modell?

Ich baue eine Anwendung in der Zend-Framework, aber ich möchte eine "Data Mapper" Stil ORM-Schicht zu implementieren, konstruieren Modell-Klassen, die nur die spezifischen Stücke von Daten, die sie benötigen, um das Domain-Konzept (unabhängig von welchen Tabellen diese Felder zufällig gehören) zu vertreten. Da meine DB-Struktur ist hoch normalisiert, die Vorteile aus einem Active Record ORM gewonnen wäre oberflächlich.

Wie würde man also eine sehr einfache, geradlinige Datenmapper-ORM-Schicht im Zend Framework implementieren?

3voto

Jim Li Punkte 86

Ich glaube, es gibt noch keinen echten ORM im Stil eines "Data Mappers" für PHP. Wenn Sie eine echte "Data Mapper" wollen, ich denke, Sie könnten Pech haben.

Es gibt 2 beliebte ORM in PHP, Propel und Doctrine. Sie sind beide mehr auf der ActiveRecord-Seite.

Doktrin ist meiner Meinung nach das A und O. Im Moment ist die stabile Version 1.2 noch nicht mit ZF integriert. Sie können z.B. das Doctrine-Kommandozeilenskript nicht verwenden, um Modellklassen für eine modulare ZF-Anwendung zu generieren.

Wenn Sie jedoch eine einmodulige ZF-Anwendung betreiben, kann die Lehre recht gut integriert werden. Wie @ArneRie schon sagte, hat ZendCasts einige wirklich gute Videos. Ich habe eine Menge daraus gelernt.

Falls es Sie interessiert, ich habe auch davon abgeleitet und einen eigenen Ansatz gemacht. Sie finden meinen Blogbeitrag zu diesem Thema unter http://blog.elinkmedia.net.au/2009/12/03/zf-doctrine-and-unit-tests/ . Sie können den Quellcode meiner Beispielanwendung auch von github herunterladen.

2voto

opHASnoNAME Punkte 19426

Ich würde vorschlagen, Doctrine mit dem Zend Framework zu verwenden, wenn Sie ein ORM verwenden möchten. Es gibt gute Tutorials und Screencasts mit einer Menge an Informationen.

Doctrine 1.2 mit Zend Framework Screencast

2voto

rhunwicks Punkte 3066

Doctrine 2, das sich derzeit in der Alpha-Phase befindet (die Beta-Phase ist für den 1. März 2010 vorgesehen), ist ein von JPA/Hibernate inspirierter Daten-Mapper-Orm. Zend Framework hat seine eigene Zend Entity-Komponente zugunsten der Integration von Doctrine 2 in Zend Framework auf Eis gelegt.

Je nachdem, wie viel Zeit Sie zur Verfügung haben, sollten Sie sich mit Doctrine 2 befassen.

1voto

Adrian Punkte 1352

Die Implementierungsdetails für die Erstellung eines ORM können recht umfangreich sein, und mir fehlt die Erfahrung, um irgendwelche sinnvollen Empfehlungen zu geben, die über die Empfehlung bereits bestehender Projekte hinausgehen.

Das Data-Mapper-Pattern ist in der PHP-Welt nicht sehr beliebt (zugunsten von Active Record, und sicherlich ist ein Großteil dieser Beliebtheit auf die Schwärmerei für Ruby on Rails in der PHP-Framework-Community zurückzuführen), obwohl es ein bemerkenswertes Projekt gibt - und es sieht vielversprechend aus.

Auslass ORM folgt dem Data-Mapper-Muster, obwohl ich nicht sicher bin, ob es für Ihre Bedürfnisse ausreichend ist. Ich habe bisher keine Probleme damit gehabt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X