include !=== include_once

Ich verwende beim Programmieren in PHP gerne das Statement include_once. Das nimmt es mir ab, mich im Zweifelsfalle darum zu sorgen, dass Funktionen doppelt definiert werden. Allerdings hat dieses Statement noch einen weiteren recht wichtigen Effekt im Vergleich zu einem normalen include: Variablen, die in der mittels include_once eingebundenen Datei definiert werden, werden nicht ins Elternscript übernommen, was bei einem „normalen“ include schon passiert.
Ein Beispiel:
script1.php

  1. < ?php
  2. echo 'foo';
  3. include_once 'script2.php';
  4. echo $var;
  5. ?>

script2.php

  1. < ?php
  2. $var = 'bar';
  3. ?>

script3.php

  1. < ?php
  2. echo 'foo';
  3. include 'script2.php';
  4. echo $var;
  5. ?>

Die Ausgabe von script1.php: foo.
Die Ausgabe von script3.php: foobar.

2 Kommentare to “include !=== include_once”

  1.  tiberian schrieb am 07. Jan 2007 um 15:04

    Tut mir ja schrecklich leid, aber das stimmt nicht.
    Ich konnte das nicht nachvollziehen – wo kämen wir denn dahin, wenn include_once() keine Variablen mehr übernehmen würde? Wer bräuchte das dann noch?

    Also sorry, aber das ist schwachsinn – wahrscheinlich hat das in deiner Anwendung irgend einen anderen grund, warum die Variablen nicht aufrufbar waren – dieser Testcase da oben funktioniert aber.

  2.  Pepino schrieb am 28. Jan 2007 um 12:14

    Vielleicht war das im Zusammenhang mit dieser Sache:

    „Something to be wary of: When you use include_once and the data that you include falls out of scope, if you use include_once again later it will not include despite the fact that what you included is no longer available.

    So you should be wary of using include_once inside functions.“

Trackback-Adresse | RSS-Feed für die Kommentare abonnieren

Hinterlasse einen Kommentar:


(Wir behalten uns vor Kommentare von dummen Menschen entweder zu löschen oder exemplarisch für die Nachwelt zu konservieren. Dumme Kommentare mit Werbelinks müssen leider auf zweiteres Privileg verzichten.)

XHTML: Du kannst diese Tags verwenden:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>