Ahoi,
Übst du dich im Glaskugellesen? :-)
nein.
»» Für erweiterte Funktionalität wird bei Zend der Db_Adapter an Db_Table übergeben, eine Klasse, als TableDataGateway fungiert.
Ich weiß ja noch nicht, was er im Detail vorhat. Wenn er keinen ORM braucht, ist das ja irrelevant. In meinen bisherigen Ausführen empfahl ich auch keinen ORM. Ein ORM ist ein allgemein gehaltenes Werkzeug. Wenn man aber spezielle Anforderungen hat, zeigt einem der mehr oder wenig starre Mapper schnell mal die seine Grenzen. Es spricht nichts dagegen, einen ORM eines Framworks zu verwenden, wenn der die eigenen Anforderungen erfüllt und man sowieso mit dem Framework arbeitet. Aber jemand, der Erfahrungen mit dem Erstellen einer Daten(bank)zugriffsschicht sammeln will, muss nicht auch gleich noch einen ORM anfangen. Das Zend Framework kann er sich ruhig trotzdem mal ansehen.
Zend macht kein ORM.
»» » Wenn MainKlasse ein Singleton ist, hieße das, dass mit jedem MainKlasse::getInstance() das ext-Objekt als Parameter übergeben werden muss. Dann kann die MainKlasse sich ein ext-Objekt auch selbst besorgen.
»» Wäre die Main-Klasse der Frontcontroller, würde dieser den Request an einen ActionController routen und der würde dann eine Model-Objekt instantiieren, welches (ggf. via Table-Data-Gateway) auf den Db_Adapter zugreift.Nicht jeder Action-Controller hantiert nur mit einem Model. (Zwei oder mehr Action-Controller verkettet oder ein paar Plugins an die Verarbeitungskette angestöpselt und jeder mit Datenbankzugriff wäre auch ein Szenario.) Wenn also mehrere Datenbankzugreifer vorhanden sind, nützt dir die Möglichkeit der Erzeugung über den Db_Adapter noch nicht viel, wenn du am Ende nicht mehrere Verbindungen haben willst oder der Adapter kein Verbindungspooling mitbringt. Du brauchst dann auch noch eine zentrale Ablagestelle (z.B. Repository) und jemanden, der da einen Adapter reinlegt. Oder eben ein Singleton.
Unter "Model" würde ich das Gesamtmodel verstehen. Wenn das aus mehreren Datenbanken sogar bestehen sollte, na denn. Das würde alles in der Model-Klasse verpackt. Der Adapter wird in der Modelklasse dann genutzt oder auch nicht oder mehrere. Zend bietet die Möglichkeit (s.a. Quickstart) eine Zend_Registry zu nutzen. Ein Klasse zur Registrierung von Objekten. Mithin bleibe ich ich dabei, dass man sich dort ganz prima die Schichten anschauen kann. Und im Quickstart ist es jetzt seit kurzem zum ersten Mal mit DB-Zugriff ganz simpel gezeigt (bzw. denk ich mal, simpler geht kaum. Prinzip u.a.: Model != DB).
Dank und Gruß,