Tanya: Require/require_once

Hallo,
bisher hatte ich eine Datei eingefügt mit require_once ...Datei.
Jetzt benötige ich sie ein weiteres Mal und habe sie noch einmal mir require_once ...Datei (Betonung auf once) eingefügt.
Ich habe keinen Fehler bekommen und die Datei wurde auch zweimal eingefügt. Was kann vielleicht zunächst unentdeckt trotzdem falsch laufen?
Thanks
Tanya

  1. Hi,

    bisher hatte ich eine Datei eingefügt mit require_once ...Datei.
    Jetzt benötige ich sie ein weiteres Mal und habe sie noch einmal mir require_once ...Datei (Betonung auf once) eingefügt.
    Ich habe keinen Fehler bekommen

    Ist ja auch nicht Sinn der Sache.

    require_once/include_once sorgen dafür, dass eine Datei nur einmal eingebunden wird, und nachfolgende Versuche die gleiche Datei erneut einzubinden, einfach stumm „nichts“ bewirken – ohne Fehlermeldung natürlich, denn sonst wäre dieses „rundum sorglos“-Konstrukt weit weniger sinnvoll einsetzbar.

    und die Datei wurde auch zweimal eingefügt.

    Und das hast du woran gemerkt?

    MfG ChrisB

    --
    Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
    1. Hi,

      und die Datei wurde auch zweimal eingefügt.

      Und das hast du woran gemerkt?

      Weil in dem erzeugten HTML der Text an den 2 gewünschten Stellen steht

      cu. Tanya

      1. Tach!

        und die Datei wurde auch zweimal eingefügt.
        Und das hast du woran gemerkt?
        Weil in dem erzeugten HTML der Text an den 2 gewünschten Stellen steht

        Kann ich nicht nachvollziehen. Bitte zeig an einem Minimalbeispiel, was du da gemacht hast!

        dedlfix.

      2. Weil in dem erzeugten HTML der Text an den 2 gewünschten Stellen steht

        Da stimmt was an Deiner Darstellung des Sachverhaltes nicht:

        <?php  
        # test.php  
        require_once 'test.txt';  
        require_once 'test.txt';  
        ?>  
        
        

        test.txt:

        Hallo  
        
        

        Ausführen/Ausgabe:

        fastix@trainer:/tmp$ php test.php
        Hallo
        fastix@trainer:/tmp$

        Wenn das stimmen würde, was Du behauptest, dann müsste da 2x Hallo stehen. Ersetze ich jeweils require_once durch reguire, dann passiert das auch.

        Es stimmt auch, wenn die Dateien so aussehen:

        <?php  
        # test.php  
        require_once 'test.inc';  
        print $text;  
        require_once 'test.inc';  
        print $text;  
        ?>  
        
        

        test.inc:

          
        <?php  
        $text="Hallo\n";  
        
        

        Das ist aber logisch, denn durch das automatisch unterlassene Einbinden der test.txt ändert sich die Variable nicht.

        Aus genau diesem Grund bitten wir immer um Codebeispiele.

        Merke: "Unerklärliches" lässt sich nicht oder nur mit einem irren und oft nicht leistbaren Aufwand hinsichtlich der Spekulation in allen Richtungen erklären, wenn die Umstände des "Unerklärlichen" nicht erklärt werden.

        Jörg Reinholz

      3. Hallo,
        eine Frage hierzu.
        Ich habe bisher überall require angegeben, obwohl nur einmal pro Seite verwendet.
        Hat es Vorteile, wenn ich es uf require_once abändere?
        Danke

        1. Hallo

          Ich habe bisher überall require angegeben, obwohl nur einmal pro Seite verwendet.
          Hat es Vorteile, wenn ich es uf require_once abändere?

          Du stellst auf diese Weise (*_once) sicher, dass du das einzubindende Skript nicht aus versehen mehrfach einbindest, wobei du eventuell Funktionen mehrfach deklarieren würdest oder Variablen von dort, deren Wert du im Skriptverlauf bereits geändert hast, wieder auf ihren Standardwert zurücksetzt.

          Den ganzen Schmonz kannst du anders formuliert auch in der Doku zu include_once nachlesen. :-)

          Tschö, Auge

          --
          Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
          Terry Pratchett, "Wachen! Wachen!"
          ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
          Veranstaltungsdatenbank Vdb 0.3
        2. Moin!

          Ich habe bisher überall require angegeben, obwohl nur einmal pro Seite verwendet.
          Hat es Vorteile, wenn ich es uf require_once abändere?

          Nein, es hat eher Nachteile, denn die Verwaltung der schon bekannten Skriptdateien kostet ein wenig mehr Aufwand, als wenn man diese Prüfung nicht machen muss.

          - Sven Rautenberg