[Funktion] In Klassen funktionen includieren

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

  • [Funktion] In Klassen funktionen includieren

    Hallo zusammen,

    habe folgendes Problem

    Also ich habe eine PHP-Datei welche eine Webdav-Klasse beschreibt. Darin möchte ich mittels include die function.inc einbinden.
    Erzeuge ich eine Instanz der Klasse, wo die entpsrechenden Zeilen enthalten sind, findet er mir die Funktionen leider nicht.


    setze in der Webdav.php deswegen des PFAD mit
    define("FUNCTION_INCLUDE_DIR","/var/www/localhost/htdocs/DB_Webdav/include/");

    binde danach die Datei ganz oben so ein
    include(FUNCTION_INCLUDE_DIR."function.inc");

    und dachte nun, dass ich auf die funktionen in der function.inc zugreifen kann. Einfach mit dem Aufruf der entpsrechenden Funktion

    bsp.:

    $klasse = new Webdav();
    $Klasse->Ausgabe(); //diese steht z.B. in der function.inc
    bzw. steht in der Webdav.php

    $this->Ausgabe();

    Damit findet er mir die Funktion leider nicht

    Was mache ich falsch?


  • #2
    Verstehe ich das richtig, dass die Funktion Ausgabe sich in der functions.inc befindet, du sie aber mit $klasse->Ausgabe als Methode der Klasse Webdav ansprichst? Wenn das der Fall ist, dann ist der Fehler klar:
    Du bindest die functions.inc zwar in der Klasse Webdav ein, trotzdem sind die darin enthaltenen Funktionen natürlich keine Methoden der Klasse Webdav und können somit auch nicht über das Objekt angesprochen werden.
    Nieder mit der Camel Case-Konvention

    Kommentar


    • #3
      Ja korrekt, aber wenn ich die function.inc mit in der Webdav-Klasse als Defintion includiere, wäre für mein Verständnis die Ausgabe Funktion als Klassenmethode für das Objekt $Klasse (in diesen Fall) definiert oder?

      D.h. ich will meine Klassendefinition nur aufteilen,mehr soll es nicht sein.
      Also ich schreibe die Funktion Ausgabe nicht mit in die Datei Webdav.php sondern in die function.inc. Ansonsten, wenn ich die Ausgabe in der Datei Webdav.php stehen habe funktioniert es. Binde ich in der Datei Webdav.php die function.inc ein findet er die Funktion Ausgabe nicht.

      Gibt es da eine Lösung, ohne eine neue Klasse zu erstellen.

      Kommentar


      • #4
        Nein, so wie du dir das vorstellst, funktioniert es nicht. Mit error_reporting(E_ALL) solltest du eigentlich eine Fehlermeldung à la
        Code:
        Fatal error: Call to undefined method...
        , bekommen ... und schon wärst du auf den Fehler gekommen.
        Nieder mit der Camel Case-Konvention

        Kommentar


        • #5
          na genau die Fehlermeldung erhalte ich ja, mit der Mittellung, das die Methode nicht existiert. Also bleibt mir nur die Variante übrig den Code so unübersichtlich,wie er jetzt ist zu belassen. Oder ein neues Klassenkonzept zu entwickeln



          Danke nochmal

          nic12

          Kommentar


          • #6
            Bitte
            Inwiefern unübersichtlich? Wenn ich dich richtig verstanden habe, dann hast du versucht, einige Methoden der Klasse in einer seperaten Datei auszulagern, um diese übersichtlicher zu halten, oder? Ich frage mich aber, was du davon hast, wenn du dafür mehrere Dateien durchwühlen musst, um die komplette Klasse samt ihrer Methoden vor dir zu haben.
            Nieder mit der Camel Case-Konvention

            Kommentar


            • #7
              ich hätte eine "frickellösung" anzubieten:

              methodenüberladung mit __call(). also innerhalb von call die funktions-datei includen und dann deren (globale) php-funktion aufrufen (ist dann aber auch keine klassenmethode).
              aber ob das sinnvoll ist

              Kommentar


              • #8
                Na wenn die Klasse dann schon an die 1000Zeilen Quellcode besitzt, dann denke ich ist es günstig aufzuteilen. Denke aber auch dass es Geschmackssache ist. Naja werde mal sehen wie ich das löse.

                Mit dem überschreiben, da kenn ich mich nicht so aus( gerade bei PHP).

                nic12

                Kommentar


                • #9
                  Hi,

                  Einige IDEs unterstützen "Klappmenüs", mit welchen Funktionen/Methoden etc zusammengefalten werden können. Dies ist z.B. beim Zend Studio der Fall.
                  Du siehst dann nur noch eine Zeile für deine Methode und es wird übersichtlicher beim Arbeiten.

                  Gruß Thomas

                  Kommentar

                  Lädt...
                  X