[OOP] Entwicklung von wiederverwendbaren Klassen

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

  • #16
    Original geschrieben von schmalle
    Ist es, ... aber nicht durchdacht

    es müsste so aussehen:
    PHP-Code:

    // irgendwo auf Seite

    $pageClass = new pageClass($array_etc);

    $impressum $pageClass->GetImpressumData();

    // in der class

    function getImpressumData() {

     
    $this->query(" select Bla bla bla );
     
    $arrar = $this->fetchData($this->resourceID);
     return 
    $array;

    }

    // irgendwo anders

    echo 
    $pageClass->parseData($impressum); 


    Aber was soll $impressum irgendwo auf der Seite ?
    return $array braucht man doch garnicht.

    Die Page Klasse erbt doch von template, also würde
    $this->assign('array', $array); in getImpressum()
    doch reichen oder ?

    assign(); ist eine Funktion der Klasse Smarty

    Und wo kommt der resourceID her ?

    Bin mir nicht sicher, aber sollte man den $slq String nicht mit an getImpressum($sql) über geben ? Was ist wenn imressum aus mehreren seiten besteht ? Impressum wahrscheinlich nicht aber sagen wir die Seite Links ?
    Zuletzt geändert von compuboy1010; 07.05.2004, 13:54.

    Kommentar


    • #17
      zunächst hab ich nen Fehler drin. Es hätte parent::query() heissen müssen.
      Aber was soll $impressum irgendwo auf der Seite ?
      Was wohl? Da steht der Inhalt Deines Impressums drin, und den willst Du doch ausgeben oder?

      $this->resourceID wird durch die methode query() erzeugt / neu befüllt.

      Ich gebe Dir noch ein Beispiel. So sieht bei mir der Code aus, der ein komplettes CRM auswirft. ( in diesem Fall die Mitarbeiterliste ):
      PHP-Code:
      <?php

      ### Allgemeine Startoptionen 
      ### Passiert alles in der CFG, die im folgenden initialisiert wird :-)

       
      include "../../inc/cfg.php";
       


      ### User Klasse

       
      include $_PATH."/inc/user.php";
       
      $user = new user();

      ### SQL Limit initialisieren
       
         
      if(!isset($_SESSION['files'][$_SESSION['activeKennung']]['forms']['limit'])) {
       
          
      $_SESSION['files'][$_SESSION['activeKennung']]['forms']['limit'] = 0;
       
         } 
      // <-- Noch kein SQL Limit vergeben   

      ### Alle Mitarbeiter
       
       
      $alle $user->getMitarbeiter();
       
      $alle count($alle);

      ### Anzuzeigende Mitarbeiter
       
       
      $daten $user->getMitarbeiterList($_SESSION['files'][$_SESSION['activeKennung']]['forms']['limit'], 'user_nachname','asc');
       
      $anzuzeigende count($daten);  
       
      ### Kann Seitenzähler vorhanden sein?

       
      if($alle $anzuzeigende) {
       
        
      $zaehler $trex->seitenZaehler($alle$anzuzeigende$_SESSION['files'][$_SESSION['activeKennung']]['forms']['limit']);
        
      $zaehler $trex->parseFile($zaehler);
       
       } 
      // <-- mehr datensätze vorhanden, als angezeigt werden
       
       
      else {
       
        
      $zaehler "";
       
       } 
      // <-- Counter nicht erforderlich
       
      ### ggf. Daten anpassen ###

       
      for($i=0$i<$anzuzeigende$i++) {
        
        if(
      $daten[$i]['parentV'] == "") { $daten[$i]['parentV'] = "<i>freigestellt</i>"; }
        
       } 
      // <-- daten durchlaufen

      ### Erzeugen der wichtigsten Template Vars
      ### _CONTENT und _MENUE müssen immer vorhanden sein 

       
      $code $trex->readFileArray($_PATH."/tpl/mitarbeiter/uebersicht.htm");
       
       
      $_CONTENT $trex->parseFile($code);
       
       
      $_MENU $trex->parseMenue();
       
       include 
      $_PATH."/files/panel.php";

      ?>
      Ausgabe im Anhang
      Angehängte Dateien
      h.a.n.d.
      Schmalle

      http://impressed.by
      http://blog.schmalenberger.it



      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
      ... nur ohne :-)

      Kommentar


      • #18
        Hallo Schmalle,

        meinst du ich könnte mal deine getMitarbeiter() Funktion sehen ?

        Warum brauchst du das "parent". Du willst doch auf die Funktion des Objekts zugreifen und nicht das der Klasse.

        query wird doch vererbt an page ...

        Zuletzt geändert von compuboy1010; 07.05.2004, 14:12.

        Kommentar


        • #19
          Original geschrieben von compuboy1010
          meinst du ich könnte mal deine getMitarbeiter() Funktion sehen ?
          Hmm, ausgerechnet da hab ich geschummelt Die Funktion dient eigentlich einem anderen Zweck ... aber naja:
          PHP-Code:
           ### Funktion zum Einlesen aller Mitarbeiter in ein Array. 
          ### Ist bereits für <select> optimiert -> value & string

          function getMItarbeiter() {
           
            
          $this->trex->freeSelect(" select a.ID_USER,b.user_vorname,b.user_nachname from ".$this->trex->_prefix."_user a 
                                      left outer join "
          .$this->trex->_prefix."_user_daten b on a.ID_user = b.FKID_user
                                      order by b.user_nachname
                                    "
          );
            while(
          $ro mysql_fetch_assoc($this->trex->resID)) {
             
          $mitarbeiter[] = array(
                                    
          "value" => $ro['ID_user'],
                                    
          "string" => $ro['user_nachname'].", ".$ro['user_vorname']
                                   );
            
            } 
          // <-- while Mitarbeiter
            
            
          return $mitarbeiter;
           
           } 
          // <-- getMitarbeiter() 
          h.a.n.d.
          Schmalle

          http://impressed.by
          http://blog.schmalenberger.it



          Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
          ... nur ohne :-)

          Kommentar


          • #20
            Hallo Schmalle,


            Das ist das was ich meine. So hätte ich es auch gemacht.
            Aber wie willst du die Klasse User nun in einem anderen Projekt verwenden. Dann musst du schon die gleiche Tabellenstruktur haben.

            Sonst geht es nicht. So ist die Klasse User an dieses Projekt gebunden. Ich denke man müsste den $sql String an GetMitarbeiter übergeben.
            Oder ?
            Zuletzt geändert von compuboy1010; 07.05.2004, 14:49.

            Kommentar


            • #21
              Schon richtig, diese Klasse ist nicht dafür gedacht woanders verwendet zu werden. Die sql class aber schon. genauso wie die Template Class.
              Denn bei diesem Projekt ging / geht es darum möglichst einfach neue Klassen zu integrieren, und nicht welche zu exportieren

              Man könnte sie allerdings mit wenig Arbeit überall verwenden. Speziell eine User Klasse. Diese Tabellen haben fast immer die gleiche Struktur.

              Zur Not legst du die SQL- Abfrage Strings als var in der klasee ab.
              h.a.n.d.
              Schmalle

              http://impressed.by
              http://blog.schmalenberger.it



              Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
              ... nur ohne :-)

              Kommentar


              • #22
                mh... wo wir bei dem thema sind...

                ich könnte dann mal allgemein das Theme Generik vorschlagen

                Wobei ich die Abstraktion einer klasse für impressum nicht verstehe, bzw. unsinnig finde ... ?!

                aber vielleicht steige ich auch nur zu spät in diese Diskussion ein ?!

                gruss

                Kommentar


                • #23
                  Schmalle,

                  unsere Unterhaltung hat mich echt weitergebracht.
                  Werde nicht mehr von Page jede Art von Seite abstrahieren.

                  Werde versuchen jede Klasse so zu schreiben dass ich vom aufrufenden Skript immer die $sql an die Funktion übergebe die was aus der DB holt.


                  Falls du noch da bist wünsche ich dir ein schönes Wochenende.

                  PS: Und natürlich allen anderen auch.
                  Zuletzt geändert von compuboy1010; 07.05.2004, 16:35.

                  Kommentar


                  • #24
                    /me ist immer da. Ich gehöre zum Inventar Ebenso ein schönes WE.
                    h.a.n.d.
                    Schmalle

                    http://impressed.by
                    http://blog.schmalenberger.it



                    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                    ... nur ohne :-)

                    Kommentar


                    • #25
                      Original geschrieben von MoRtAlAn

                      ich könnte dann mal allgemein das Theme Generik vorschlagen
                      aber vielleicht steige ich auch nur zu spät in diese Diskussion ein ?!
                      Hallo
                      Was ist Generik ?
                      Und wem möchtest du das vorschlagen ?

                      Kommentar

                      Lädt...
                      X