Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Autoloading Functions??

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Autoloading Functions??

    hello zusammen,

    kurze frage, kennt jemand eine möglichkeit funktionen erst bei erstmaligem aufruf zu laden? so wie es bei klassen möglich ist (siehe: http://at.php.net/manual/en/language.oop5.autoload.php)

    mfg and3k


  • #2
    Nö.
    privater Blog

    Kommentar


    • #3
      doch:
      require_once

      Kommentar


      • #4
        nein require_once verhindert nur dass sie doppel geladen wird ... ich will einfach include php datei erst laden wenn ich die funktion aufruf. wie wie das mit __autoload() für klassen geht ...

        mfg

        Kommentar


        • #5
          der Unterschied zwischen require und include ist dieser

          require wird so eingebunden als sei diese Datei fest im Script
          inlcude wird erst dann eingebunden wenn es das erste mal gebraucht wird.

          Also sollte es ohne Probleme möglich sein , einfach innerhalb der Funktion zu sagen include("datei.php");

          Kommentar


          • #6
            Zitat von Fips
            der Unterschied zwischen require und include ist dieser

            require wird so eingebunden als sei diese Datei fest im Script
            inlcude wird erst dann eingebunden wenn es das erste mal gebraucht wird.

            Zitat von php.net
            require() und include() sind in jeder Hinsicht gleichwertig mit der einen Ausnahme: der Umgang mit Fehlern. include() erzeugt ein Warning während require() in einem Fatal Error endet.
            http://de3.php.net/require

            Zitat von Ben
            Nö.
            da würde ich mich mal anschließen

            Kommentar


            • #7
              Dann verarscht mich hier der Autor des Buches aber derbe

              Ich zitiere mal daraus :

              "mit der Funktion include wird eine php oder html Datei eingeschlossen und so ausgeführt , als wäre sie alleine aufgereufen worden , sie können das auch in Schleifen einsetzen ..."

              Bei Require lesen wir dann schon :

              "Wenn sie ein Modul fest in eine Seite einbinden möchten , so als wäre es an dieser Stelle direkt untergebracht, nutzen sie dagegen die Anweisung require.
              In Datein die mit require eingebunden werden , muss der PHP-Code in den Begrenzungszeichen stehen--"

              Und nun kommts aber :

              "Der Unterschied zwischen den Beiden Befehlen liegt liegt im Zeitpunkt der Verarbeitung der einzuschliessenden Datein.require wird zuerst ausgeführt - vor dem Parsen des gesammten Scriptes.
              Bei Include hingegen erfolgt die integration erst wenn die Abarbeitung an dieser Stelle angelangt ist..."

              Was wohl den Unterschied zwischen den fatal error und dem warning erklären sollte.

              Nachzulesen im Buche :

              "Programmieren lernen in PHP 4 , ein kompakter Einstieg in die Webserverprogrammierung" von Jörg Krause.

              So nun ist die Frage wer lügt

              Kommentar


              • #8
                Zitat von php.net
                Anmerkung: Für frühere Versionen als PHP 4.0.2 gilt folgendes: require() wird immer versuchen die Zieldatei zu lesen, selbst wenn die Zeile in der die Anweisung steht, nie ausgeführt wird. Eine bedingte Anweisung hat keine Auswirkungen auf require(). Wenn jedoch die Zeile in der require() steht, nie ausgeführt wird, wird auch der Code der Zieldatei nie ausgeführt werden. Ähnliches gilt für Schleifenstrukturen, diese beeinflussen das Verhalten von require() nicht. Obwohl der Code, der in der Zieldatei enthalten ist, zur Schleife gehört, wird require() selbst nur einmal ausgeführt.
                wenn wir also mit museumsversionen von php arbeiten, hat dein buch durchaus recht ... :wink:

                Kommentar


                • #9
                  Zitat von karl-150
                  Zitat von php.net
                  Anmerkung: Für frühere Versionen als PHP 4.0.2 gilt folgendes: require() wird immer versuchen die Zieldatei zu lesen, selbst wenn die Zeile in der die Anweisung steht, nie ausgeführt wird. Eine bedingte Anweisung hat keine Auswirkungen auf require(). Wenn jedoch die Zeile in der require() steht, nie ausgeführt wird, wird auch der Code der Zieldatei nie ausgeführt werden. Ähnliches gilt für Schleifenstrukturen, diese beeinflussen das Verhalten von require() nicht. Obwohl der Code, der in der Zieldatei enthalten ist, zur Schleife gehört, wird require() selbst nur einmal ausgeführt.
                  wenn wir also mit museumsversionen von php arbeiten, hat dein buch durchaus recht ... :wink:
                  Das Buch ist so gesehn auch nicht der Knaller , ich mein massig Fehler im Quellcode und Globale Variablen immer an

                  Ich glaub erstmal das was dort steht lass mich aber was besseren belehren gerne.Wenn sich das seit dem geändert hat ist es gut zu wissen an dieser Stelle , wobei ich mich dann immer noch frage warum 2 unterschiedliche Befehle wenn diese eh das selbe machen :/ Abgesehn von der Fehlermeldung im diesem Falle.

                  Welche wäre dann ratsamer ?

                  Kommentar


                  • #10
                    Wenn Dein Skript ohne die Datei garnicht sinnvoll weiterarbeiten kann und sie ohne Fehlkonfiguration einfach vorhanden sein muss, dann meistens require.

                    Kommentar


                    • #11
                      Ne Idee wäre die Funktion als Statische Methode einer Klasse zu speichern so könntes du die Funktion Dynamisch laden.
                      Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                      Kommentar


                      • #12
                        also sinnvoller weiße sollte jeder der bisschen pro ist require verwenden weil normaler weiße hat man keinen code der unwichtig genug ist das es egal ist ob er inkludiert wird oder nicht ...

                        mit include reißt man sich viel leichter ne sicherheitslücke auf ...

                        ich hab über 100 funktionen in meinem framework und auch zig klassen. wenn ich die für jede seite einles muss php erst alles auf fehler parsen und das kostet viel speed. ich will einfach nur da inkludieren was ich auch dann tatsächlihc brauch. mit __autoload() geht das super für klassen. sowas wie __autoloaf_function() gibts leider net. und mir fällt nix ein wie ich mir sowas selber machen kann ...

                        Kommentar


                        • #13
                          Lösungsvorschlag 1: ein Skript basteln, dass Funktionen im Quellcode sucht und dementsprechend vielleicht eine includes.php erstellt

                          LV 2: Dein Framework in mehrere Versionen (Light, Standard, All) bzw. Pakete (DB, File, Session, ..) zu unterteilen und nur eine dieser Versionen zu includen (natürlich hast du bei den Versionen immer noch trotzdem Funktionen, die nicht gebraucht aber eingefügt werden)

                          LV 3: ALLE Funktionsaufrufe durch eine Hilfsfunktion zu ersetzen, z.B. CallFunction(string functionName, array functionArguments) welches per function_exists() etc testet, ob die Datei schon includet wurde

                          Kommentar


                          • #14
                            Zitat von and3k
                            also sinnvoller weiße sollte jeder der bisschen pro ist require verwenden weil normaler weiße hat man keinen code der unwichtig genug ist das es egal ist ob er inkludiert wird oder nicht ...
                            noch sinnvoller is es require_once zu verwenden
                            Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                            Kommentar


                            • #15
                              Zitat von and3k
                              und mir fällt nix ein wie ich mir sowas selber machen kann ...
                              Du hast doch jetzt (neben viel Müll) zumindest zwei gescheite Vorschläge - wobei für mich auch den einzig sauberen Weg require_once() darstellt.

                              Übrigends ... mutiger Beitrag ("normaler weiße", "muss php erst alles auf fehler parsen", Sicherheitslücken durch "inkludieren" ... )

                              Basti

                              Kommentar

                              Lädt...
                              X