Ankündigung

Einklappen
Keine Ankündigung bisher.

DAO-Klassen dynamisch erstellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • DAO-Klassen dynamisch erstellen

    Hallo,

    meine Frage handelt von den DAOs, wie sie z.B. mepeisen hier beschrieben hat... oder auch viele andere in diesem Forum.

    Nun wurde ja schon des öfteren hier das Zusammenspiel von Managerklassen und den DAOs beschrieben. So wie ich es verstanden habe, sind es ja die Managerklassen, die als Models mit der Datenquelle kommunizieren und den den jeweiligen DAO befüllen, welche widerum in Views usw. als Datenhalter zum Einsatz kommt.

    Ich weiß, der Grundgedanke beim MVC ist möglichst hohe Unabhängigkeit und Wiederverwendbarkeit der einzelnen Module; das z.B. die Datenquelle nicht immer eine Datenbank sein muss, sondern auch eine Exceltabelle sein kann. Wie wäre es aber, wenn ich hier die DAOs nicht konkret definiere, sondern von der Klasse, welche die Datenquelle representiert, erben lasse. Ein Beispiel:
    PHP-Code:
    // UserDAO
    class User extends DataSource
    {
        
    // keine konkret definierten Klassenvariablen
        // diese werden von der Datenbank gelesen
        // somit Flexibilität, da ich die Datenbanktabelle User
        // beliebig erweitern kann, ohne Veränderungen in der
        // UserDAO zu notieren.
    }


    // Datenquelle, in diesem Falle die Datenbank
    class DataSource
    {
        private   
    $db;
        protected 
    $tabelle get_class($this);
        protected 
    $variablen = array();
        
        public function 
    __construct($db)
        {
            
    $this->db $db;
            
    $this->variablen $db->query('HOLE MIR ALLE SPALTENNAMEN VON DER TABELLE '$this->tabelle);
        }

    Somit könnte die UserManager problemlos die User-Klasse befüllen, damit diese die Daten bereitstellen kann, wenn Sie irgendwo im Code aufgerufen werden. Die UserDAO wäre dann also lediglich eine temporärer Datenhalter.

    Würde mich freuen, wenn mich jemand aufklären könnte.

  • #2
    So lange du nur mit ganz ganz simplen Datensätzen arbeitest und keine Relationen abgebildet haben möchtest funktioniert das sicherlich. Ansonsten stößt du damit ganz schnell an die Grenzen und läufst Gefahr, einen dirty hack nach dem anderen hinzuzufügen.

    Versuche lieber, von Anfang an, Klassen für Datenquellen und Datenhaltung zu trennen und definiere für letztere auch klar, was für Eigenschaften und Assoziationen bestehen. Wenn du die Programmierung trotzdem möglichst generisch haben willst, kannst du dies natürlich auch z.B. mit XML konfigurieren und in einer abstrakten Oberklasse verarbeiten.

    So wie ich es verstanden habe, sind es ja die Managerklassen, die als Models mit der Datenquelle kommunizieren und den den jeweiligen DAO befüllen
    Ich glaube, du wirfst da ein paar Begriffe durcheinander. Zum besseren Verständnis schau dir doch mal beispielhaft ein paar Implementierungen des Active Record Patterns an, Tutorials gibt es zuhauf im Netz, genauso wie fertige professionelle Lösungen.
    [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
    [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

    Kommentar

    Lädt...
    X