Klassen ohne extends verknüpfen (PHP 4)

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

  • Klassen ohne extends verknüpfen (PHP 4)

    Einen schönen Abend allen zusammen.
    Ich habe eine Frage die recht simpel ist aber die Suche im Web
    hat nichts gefunden und nun wende ich mich an euch.

    Ich bin grade dabei einr Klasse zu schreiben die alle Klassen
    aus einem bestimmten Verzeichnishandle ausliest und in ein Array übergibt.
    So weit so gut nun könnte man theoretisch eine Klasse aus dem Array
    nehmen und damit eine Instanz erzeugen was aber nicht Sinn und Zweck
    des Ganzen ist sondern ich habe vor mit einer Instanz auf alle Klassenmethoden
    zu zu greifen die in allen Klassen vorhanden sind die
    Das System aus dem Verzeichnishandle ausgelesen hat.

    Nun zu meiner Frage... Wie stelle ich es an das man über diese eine
    Instanz alle Methoden aller Klassen ansprechen kann?
    Um ehrlich zu sein weiss ich nicht mal ob es möglich ist oder
    nicht da ich noch nicht sehr viel Erfahrung in der OOP habe und
    mich auch allgemein erst seit geringer Zeit mit der Webprogrammierung
    befasse. Falls es dennoch eine Lösung dafür geben sollte wäre
    ich sehr dankbar wenn man mir ein Denkanstoß geben könnte oder
    weiterhelfen könnte.

    Gruß Kathal

  • #2
    vielleicht kannst du ganz grob in wenigen zeilen code demonstrieren, was du meinst (wie es momentan läuft und wofür)?

    Kommentar


    • #3
      Hmm nun ich weiss nicht ob diese Demonstration reichen wird aber ich
      hoffe es.
      PHP-Code:
      class Master
      {
          var 
      $classes = array();
           function 
      Master()
           {
               
      /**
                * Hier der Code der alle Klassen aus einem 
                * Verzeichnishandle ausliest und in den Array
                * $classes übergibt 
                */
           
      }
                       
                       function 
      CreateMasterInstanz()
                       {
                         
      /**
                          * Hier wäre der Code der aus allen Klassen eine 
                          * einzige erstellt mit der man alle Methoden von
                          * aller Klassen ansprechen kann
                          */
                       
      }
      }


      class 
      User
      {
          function 
      RegistierUser()
          {
              
          }
          
          function 
      DeleteUser()
          {
              
          }
      }

      class 
      blabla
      {
          function 
      bla()
          {
              
          }
      }

      $master = new Master();

      $master->DeleteUser(); 

      Und nun sollte es so sein das man mit der Instanz die man mit der Klasse Master erzeugt auch die Methoden der Klasse blabla und User ansprechen kann.

      Nun wie es im Moment läuft? Ich habe es bisher nicht getestet da
      ich erstmal dieses Problem lösen wollte. Bisher werden alle Klassen
      in den Array übergeben anhand eines Suchmusters das alle Datein nach
      dem Vorkommen von Klassen durchsucht.

      Kommentar


      • #4
        warum steckst du die methode "deleteUser" dann nicht einfach in die master-klasse?

        http://www.das-dass.de/

        Kommentar


        • #5
          Nun weil das nicht der Sinn dessen ist.
          So muss man nicht jede Klasse einzelnd ansprechen und
          das könnte sehr nützlich sein wenn man seine Seite auf OOP aufbaut.
          Und da ich recht viele Klassen habe und nicht eine Klasse mit allem möglichem Mist voll stopfen will.

          Kommentar


          • #6
            warum jede? wer soll denn noch user löschen, wenn nicht der master?

            Kommentar


            • #7
              Der Master würde sie löschen aber er würde die Methode DeleteUser aus der Klasse User aufrufen aber ohne eine Instanz dafür zu erzeugen.

              Kommentar


              • #8
                hm.. weißt du, was statische methoden sind?

                Kommentar


                • #9
                  Ja klar weiss ich das aber ist das in PHP 4 möglich ich kann mich grade nur entsinnen das static nur in PHP 5 verfügbar ist.

                  Kommentar


                  • #10
                    http://de2.php.net/manual/en/keyword...ekudotayim.php

                    Kommentar


                    • #11
                      Guck Dir mal den Scope Resolution Operator ( :: ) an. Rufe die Funktionen einfach wie folgt auf:

                      User::RegistierUser();
                      blabla::bla();
                      ...

                      Kommentar


                      • #12
                        Eigentlich ist es nicht Sinn der OOP, eine Superklasse zu erstellen sondern mehrere Klassen mit einzelnen Rollen zu pflegen. Wenn du eine Superklasse mit allen Methoden hast, kannst du auch gleich die Klassen weglassen und prozedural programmieren!

                        Kommentar


                        • #13
                          Sorry kleiner Denkfehler von mir =/ es sollen schon die einzelnden Klassen
                          bestehen bleiben aber man soll mit einer Instanz alle Klassen ansprechen
                          können...

                          Kommentar


                          • #14
                            wofür? mach doch endlich ein vernünftiges beispiel, welche klassen es alles gibt und warum eine instanz alle ansprechen können muss.

                            bis dahin bleibt die antwort bzgl. statischer methoden gültig.

                            Kommentar


                            • #15
                              Nun im Moment kann ich kein gutes Bespiel geben da dieses System
                              die Grunstruktur sein wird für eine Seite die ich erst dann erstellen werde
                              aber ich kann kurz erläutern wofür ich das alles machen will.
                              Es wird mehrere Klassen geben z.B. für Accountfunctionen oder
                              für Styledaten laden etc. und dabei werden recht viele Instanzen entstehen
                              und da ich die nicht immer einzelnd aufrufen will sollte es so zu sagen
                              eine Hauptinstanz geben mit der man auf alle Klassen zugreifen kann.

                              Bisher läuft habe ich es nur so hin bekommen das die Hauptklasse
                              beim erzeugen der Instanz die im Ordner "lib" enthaltenden Files
                              nach Klassen durchsucht und sie der Reihe nach in ein Array übergibt.
                              das ganze sieht so aus:

                              PHP-Code:
                              function OOPlistEvents()
                                  {
                                      
                              $muster '^class.* \{';
                                       
                              $hits = array();    $y 0;
                                         
                              $dir dir($this->OOPdir);
                                        while (
                              $files $dir->read())
                                        {
                                              
                              $file fopen($files[$y],'r');
                                               do{
                                                     
                              $line fgets($file);
                                                     
                              $search ereg($muster,$line,$hits[$y]);
                                                       if (
                              $search)
                                                       {
                                                           
                              $class explode(' ',$hits[$y]);
                                                             
                              array_push($this->events,$class[1]);
                                                       }
                                               }while (
                              $line);
                                            
                              $y++;
                                        }
                                  } 
                              Bislang war es so geplant das man dann den Array nach einer Klasse
                              durchsuchen kann und aus der Klasse eine Instanz erzeugt bis ich
                              auf die Idee gekommen bin zu versuchen über eine Instanz auf die
                              Methoden aller Klassen die im Array enthalten sind zu zu greifen.

                              Kommentar

                              Lädt...
                              X