2012-03-31 10 views
0

Ich nehme an, es hackt nicht wirklich den Inhalt der Datei, hält es alle require 'd Pfadnamen in eine interne Hash-Tabelle? Der Kontext dafür ist, dass ich einige (redeclaration) Warnungen bekomme, die Sinn machen würden, wenn require_once durch etwas andere Pfade zu der gleichen Datei verwirrt würde, und ich würde offensichtlich lieber Dateien nicht mehrfach laden.Wie überprüft require_once "ob die Datei bereits enthalten ist"?

Antwort

2

require_once() werden nur eindeutige Dateizugriffspfade verfolgen.

  • Wenn der gleiche Inhalt in zwei Dateien zugegriffen wird, sie als unterschiedliche Dateien (intuitiv)
  • Wenn die gleiche physische Datei über zwei verschiedene Pfade zugegriffen wird behandelt wird, ist es als verschiedene Dateien behandelt werden. (Weniger intuitiv)
  • Wenn eine physische Datei zugegriffen wird, später ein symbolischer Link auf die gleiche physikalische Datei, wird sie als verschiedene Dateien behandelt wird (am wenigsten intuitiv)
+0

auch in PHP-Versionen unter 5, Standorte Fenster Weg könnte Durcheinander geraten mit Fällen und Fenstern, die in Pfaden "~" hinzufügen. http://www.php.net/manual/en/function.include-once.php – David

+0

Das alles macht Sinn, ich werde die Antwort akzeptieren, wenn die min-Zeit abgelaufen ist. Wird das überall in den Dokumenten erwähnt? – quodlibetor

+0

Ich recherchierte dies beim Erstellen eines hässlichen Hacks für 'require_once()' mit Symlinks, da ich in den Dokumenten nichts darüber gefunden habe. –

Verwandte Themen