[OOP] neue Methode in Class "includieren"?

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

  • [OOP] neue Methode in Class "includieren"?

    Hallo zusammen,

    gibt es eine Möglichkeit neue Methoden in eine bestehende Klasse nachträglich zu registrieren?

    (ich meine nicht mittels class X extends Y) sondern eher eine Datei mit dem Inhalt:

    " function bla ($bla){ ...}" im

    __construct einzulesen!

    Bitte um schnelle Antwort, relativ wichtig da sonst das Projekt erst einmal auf Eis liegt

    P.S. Die __autoload Geschichte hilft mir leider auch nicht weiter, da diese nur für die implementation NEUER Klassen gedacht ist.

    Liebe Grüße

    echelon

  • #2
    zur laufzeit? was soll das für ein workaround sein?

    Kommentar


    • #3
      nen "Workaround" möchte ich das nicht nennen..

      Ich möchte gerne ein "Modul-basiertes" System schaffen.

      Jedem Modul ist eine Datei mit Funktionen und eine Datei mit Definitionen zugewiesen.

      Da ich nicht für jeden Fall immer eine Einzelne Klasse "schaffen" möchte und lediglich die Funktion (nehmen wir mal an "get_content" aus dem modul "content") aufrufen möchte.

      ich habe eine riesengroße Klasse in der (mittels extends) auch die SQL-Funktionen etc vorhanden sind. Um nun (komplett variabel) neue Module einladen zu können (nur mittels der Dateien, stehen NICHT in der Datenbank) muss ich auch irgendwie die Funktionen der Module in meine Klasse kriegen um damit arbeiten zu können.

      Das einzige was mir als Workaround für DIESE Problemstellung einfällt ist, für jedes Modul ne neue Klasse zu schaffen, die ich mit call_user_func aufrufe, aber das ist irgendwie geprutscht

      Hoffe Ihr versteht meine Beschreibung, ist garnicht so leicht den Hirn-Furz in Worte zu fassen


      Thx

      echelon

      Kommentar


      • #4
        das sieht doch nach einem workaround aus... die verteilung der funktionen (wo sie implementiert werden sollen) lässt sich am besten mittels vererbung und je nach dem mittels interfaces lösen.

        Kommentar


        • #5
          autsch...

          ja ääähm... wenn man jetzt dem guten c++ lehrer zugehört hätte würde man bestimmt verstehen wie das mit vererbung geht.. (oder ist das extends? *schäm*)...

          Durch diese "Interfaces" geschichte blick ich nich durch.

          Bitte um RAAAAT

          thx

          Kommentar


          • #6
            in zwei worten kann ich es dir nicht erklären. informiere dich in der fachliteratur. nur "aus dem bauch heraus" wirst du höchstwahrscheinlich keine vernünftige modularisierbare anwendung schreiben können.

            Kommentar


            • #7
              nunja... dann mach ich es doch auf meine art...

              danke trotzdem

              Kommentar


              • #8
                ich habe eine riesengroße Klasse in der (mittels extends) auch die SQL-Funktionen etc vorhanden sind.
                hmm, damit hast du ja eher wenig mit modularität zu tun...! Du solltest dir noch einmal überlegen, diese riesengroße Klasse in mehrere "normalgroße" Klassen aufzuteilen!

                Kommentar


                • #9
                  mh ja.. hab ich schon überlegt, problem ist nur, dass ich dann immer wieder ein objekt neu initalisieren muss für jedes "modul"

                  d.h. ich hab mein objekt $site der hauptklasse, nun kommt das modul "content" welches ich ja irgendwie benutzen muss (mit dessen klasse). wie kann ich nun ein objekt $content automatisch generieren?

                  soll ja alles dynamisch geladen werden! hach.. ich weiß nich wie ich euch das hier so erklären kann wie ich das meine :S

                  Kommentar


                  • #10
                    ich kann mir dein problem vorstellen, wenn du wirklich eine idee brauchst wäre es gut wenn du nochmal konkret definierst was du haben willst und am besten ein code beispiel gibts
                    EDIT:
                    es gibt eine php funktion die zur laufzeit eine methode in eine klasse einbindet allerdings kann ich nicht an den namen erinnern ...
                    Zuletzt geändert von tontechniker; 19.02.2007, 20:32.
                    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                    Kommentar


                    • #11
                      naja, man könnte schon mit __call() sowas machen, allerdings ist es eigentlich sinnvoller, das ganze per objektkomposition zu erweitern. du kannst ja aus jeder methode, die du eigentlich dynamisch nachladen willst, ein eigenes objekt machen.

                      grüße
                      axo

                      Kommentar


                      • #12
                        wenn du z.b. dynamisch auf $site -> content -> getContent ( ) zugreifen willst könntest du eine methode __get definieren die das Objekt dann erstellt und er klassen variable content zuweist
                        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                        Kommentar


                        • #13
                          @tontechniker: Meintest du create_function?
                          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                          var_dump(), print_r(), debug_backtrace und echo.
                          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                          Kommentar


                          • #14
                            ja genau ich meine ich ... für methoden gibts das mein ich auch - hab auf die schnelle nur http://www.php.net/manual/en/functio...method-add.php gefunden ...
                            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                            Kommentar


                            • #15
                              sehr geil genau so eine funktion hab ich gesucht.. nur doof dass es noch nich standardmäßig drin is :S

                              naja... egal wird wohl iwann mal kommen

                              jetzt noch weiter:

                              gibts nen php-code der diese extension einläd wenn ich die dll mit in mein paket packen würde?

                              also... es soll ja später ein paket werden und wenn der "kunde" es runterläds sollte er nicht jetzt noch den webserver frickeln

                              gute nacht an alle, bin bissl angeschlagen

                              danke für die tollen antworten bis jetzt

                              Kommentar

                              Lädt...
                              X