Jeena Paradies: wiederverwertbarer code

Hallo,

Ich würde gerne tiefer in die Materie von oop einsteigen, jetzt kratze ich nur ein bisschen an der Oberfläche. http://aktuell.de.selfhtml.org/artikel/programmiertechnik/wiederverwendung/ hat mir schon sehr viel weiter geholfen, aber da wo es ganz spannend wurde ist der Autor nicht tiefer eingegangen.

Der Autor schreibt:
---
Beispielsweise ist eine Funktion zur Speicherung eines Datensatzes schon recht schön. Aber wenn man damit nur Name, E-Mail-Adresse und einen Text speichern kann, ist das Einsatzgebiet auch schon wieder relativ beschränkt.
---
Aber er gibt keinen Hinweis, wie ich das besser machen kann.

Ich möchte irgendwas programmieren, dass Einträge von Benutzern entgegennimmt, validiert und in eine db reinschreibt, ohne dass ich im voraus weiß welche Felder, bzw wie viele es sind. Hat jemand vielleicht einen Link für mich, wo man sich über genau dieses Thema informieren kann? Oder ein Beispielprojekt oder so was.

Grüße
Jeena Paradies

  1. Hallo Jeena,

    Ich bin auch seinerzeit durch den Artikel von Achim auf den Trichter gekommen. Mein Gefühl, was Deine Programmidee anbetrifft, ist allerdings, dass Du eine eierlegende Wollmilchsau, die zusaetzlich Kaffe kochen kann, bauen willst. Vergleiche http://phppatterns.com/index.php/article/articleview/31/1/1/.
    Ohne jetzt Sinn oder Unsinn Deines Projekts in Frage stellen zu wollen, meine ich, Du solltest das in viele Einzelklassen unterteilen.

    Mal ein grober Entwurf:

    Ich möchte irgendwas programmieren, dass Einträge von Benutzern entgegennimmt, validiert

    Schreib eine Klasse Form_Validation, die irgendein Array von Daten durchpfluegt und validiert. Ich weise an der stelle mal ganz bescheiden auf meinen Artikel http://aktuell.de.selfhtml.org/tippstricks/javascript/formkontrolle/index.htm hin, bei dem Du Dir ein paar Ideen bezgl. Konfiguration etc. holen kannst.

    und in eine db reinschreibt,

    Schreib eine Klasse DB_Connection, die nix anderes macht als sich mit einer DB zu verbinden und dir eine Resource zur Verfuegung stellt

    ohne dass ich im voraus weiß welche Felder, bzw wie viele es sind

    Lass dir die Feldnamen ausgeben und deren Anzahl. Ich hab da jetzt keine schlaue Idee, wie ich das in meiner Struktur unterbringe, aber da faellt dir bestimmt was huebsches ein.

    Hat jemand vielleicht einen Link für mich, wo man sich über genau dieses Thema informieren kann? Oder ein Beispielprojekt oder so was.

    Ich kann Dir gerne ein paar von meinen Klassen schicken, manche sind sogar dokumentiert ;-)

    Dieter

    1. Hi,

      Schreib eine Klasse Form_Validation,

      Definiere ein Interface FormValidator, implementiere dieses je nach Gusto mit konkreten Validator-Klassen und hole dir die Instanzen im 'Client'-Code über eine FormValidatorFactory.

      Schreib eine Klasse DB_Connection,

      Definiere ein Interface DBConnection, implementiere dieses je nach Gusto mit konkreten Connector-Klassen und hole dir die Instanzen im 'Client'-Code usw..

      Dieser Aufwand mag natürlich für die konkrete Anforderung übertrieben sein. Die Beispiele sind jedoch ein Hinweis darauf, was OO bedeuten kann (z.B. Trennung Schnittstelle/Implementierung..).

      Für mich sehr lehrreich:
      "Design Patterns/Elements of Reusable Object Oriented Software".
      Gamma, Helm, Johnson, Vlissides. Addison-Wesley, ISBN 0-201-63361-2.

      Eine deutsche Übersetzung gibt es natürlich auch..

      Viele Grüße,
      Martin Jung

      1. "Design Patterns/Elements of Reusable Object Oriented Software".
        Gamma, Helm, Johnson, Vlissides. Eine deutsche Übersetzung gibt es natürlich auch..

        Von eben dieser Übersetzung würde ich absehen. M.E. ist die Originalversion für jeden, der ansatzweise Englisch versteht vorzuziehen, weil besser verständlich...

        Grüsse

    2. Hallo,

      [...], dass Du eine eierlegende Wollmilchsau, die zusaetzlich Kaffe kochen kann, bauen willst.

      Ja das könnte schon irgendwie sein, daran sieht man dass ich noch nicht so richtig in der Materie drinn bin, und nicht wirklich weiß was für die Zukunft sinnvoll ist.

      Vergleiche http://phppatterns.com/index.php/article/articleview/31/1/1/.
      Ohne jetzt Sinn oder Unsinn Deines Projekts in Frage stellen zu wollen, meine ich, Du solltest das in viele Einzelklassen unterteilen.

      Bestimmt, nur kann ich mir das zur Zeit noch nicht so richtig aufteilen. Ich weiß nicht welche klassen ich denn dazu brauchen werde.

      Schreib eine Klasse Form_Validation, die irgendein Array von Daten durchpfluegt und validiert. Ich weise an der stelle mal ganz bescheiden auf meinen Artikel http://aktuell.de.selfhtml.org/tippstricks/javascript/formkontrolle/index.htm hin, bei dem Du Dir ein paar Ideen bezgl. Konfiguration etc. holen kannst.

      Der Artikel ist super, habe viele Ideen davon bekommen. Vor allem die Abstraktion hat mir gefehlt, da ich irgendwie dachte dass ich jedes ding einzeln überprüfen muss, und das wollte mir nicht in dieses oop reinpassen.

      und in eine db reinschreibt,
      Schreib eine Klasse DB_Connection, die nix anderes macht als sich mit einer DB zu verbinden und dir eine Resource zur Verfuegung stellt

      Das habe ich denke ich schon von http://tut.php-q.net/mysql-class.html#u3 übernommen und es hat auch bei einigen meiner Projekte wunderbar funktioniert.

      ohne dass ich im voraus weiß welche Felder, bzw wie viele es sind
      Lass dir die Feldnamen ausgeben und deren Anzahl. Ich hab da jetzt keine schlaue Idee, wie ich das in meiner Struktur unterbringe, aber da faellt dir bestimmt was huebsches ein.

      Also der Feldname soll dann auch der Spaltenname in der DB sein, und auch intern ein Name, der dazu verwendet wird das Feld zu identifizieren. Das könnte gut klappen, da es dann egal ist welche Namen sie haben, und wie viele Felder es gibt.

      Ich kann Dir gerne ein paar von meinen Klassen schicken, manche sind sogar dokumentiert ;-)

      Ja bitte, vor allem die dokumentierten interessieren mich brennend, um eine Vorstellung zu bekommen wie man an solche Sachen rangehen kann.

      Grüße
      Jeena Paradies

      1. Hallo Jeena,

        Ich werd dir uebers Wochenende was zusammenstellen.

        Dieter

  2. Ich möchte irgendwas programmieren, dass Einträge von Benutzern entgegennimmt, validiert und in eine db reinschreibt, ohne dass ich im voraus weiß welche Felder, bzw wie viele es sind. Hat jemand vielleicht einen Link für mich, wo man sich über genau dieses Thema informieren kann? Oder ein Beispielprojekt oder so was.

    dies alles in einer klasse zu erledigen, wäre wirklich zu speziell.
    daher würde ich dir insgesamt erst einmal 4 klassen vorschlagen:

    eine formualarklasse
    eine datenbankklasse
    eine benutzerklasse

    diese 3 werden dann objekte in deiner irgendwasklasse.

    aus der benutzerklasse lassen sich dann die attribute für die datenbank und das formular liefern. wenn dabei dieselben namen benutzt werden, hast du durchgängig vom formular bis zum spaltennamen in der tabelle zb. immer BenutzerID oä. stehen.

    sind im formular und datenbank verschieden namen, kann die benutzerklasse methoden bereitstellen, um die namen zu liefern.
    dies ist der bessere weg.