Anzeige
Tutorialbeschreibung

Require und Include und andere Feinheiten beim Dateien auslesen.

Require und Include und andere Feinheiten beim Dateien auslesen.

Zu diesem Thema gibt es viel zu sagen, ich versuche aber nur aufs Wesentliche zusammenzufassen! 

Ziel all dieser Befehle, ist es Dateiinhalte der einen Datei in einer anderen Datei zur Verfügung zu haben; der Sinn dafür liegt auf der Hand: eine Variable wird nur einmal mit Inhalten (z.B.: in der file includet.php) ausgefüllt und kann in der Folge (durch include bzw. require) in jeder anderen verwendet werden. 


Bilder


Also zur Praxis: 

INCLUDE:  

 
includet.php

<?$time = 'Heute ist der:&nbsp;';?>  

includet1.php 

<?$abc =’xxxxx’;?>

time.php 

<? include’includet.php’; 

include’includet1.php’; 

echo $time.date("d.m.Y");?>  


Soweit ist es allgemein klar und macht auch kaum Probleme!  … aber: was passiert, wenn man eine der zu includierenden files weglässt, z.B.: includet1.php?

… wird zunächst jeder sagen: ‚Ein parse-error, was sonst?’. 

Das ist auch klar, aber was passiert mit dem Script time.php 

Sehen wir es uns an: 

Warning: main(includet1.php): failed to open stream: No such file or directory in c:programmeabcwwwincludetime.php on line 2

Warning: main(): Failed opening 'includet1.php' for inclusion (include_path='C:Programmeabcphppear') in c:programmeabcwwwincludetime.php on line 2

Heute ist der: 28.05.2006
 

 

 Ja! Es wird ausgeführt, obwohl eine Datei nicht gefunden wurde (bzw. nicht vorhanden ist).  

 

 Aber dieser unschöne Effekt (ParseError samt Skriptausführung) ist oft nicht erwünscht, bzw. sogar störend (weil man das Parsen beenden will, wenn eine Datei fehlt), dazu dient der folgende Befehl, der das selbe leistet, wie include(), aber noch mehr tut, sollte eine Datei fehlen, die includiert wird, der Befehl heißt … 

REQUIRE: 

… wir ändern also time.php folgendermaßen und lassen wieder includet1.php weg 

time.php

<? require'includet.php'; 

require'includet1.php'; 

echo $time.date("d.m.Y");?> 

 
Was passiert jetzt? … Richtig! Dieselben parse-error, aber keine weitere Ausführung des Scripts time.php  

Warning: main(includet1.php): failed to open stream: No such file or directory in c:programmeabcwwwincludetime.php on line 2

Warning: main(): Failed opening 'includet1.php' for inclusion (include_path='C:Programmeabcphppear') in c:programmeabcwwwincludetime.php on line 2
 

 

Das Handbuch definiert diesen Unterschied so: http://at.php.net/manual/de/function.require.php  

Kein besonders großer Unterschied, aber include und require haben ein paar interessante Details, mit denen man sich (vor dem Schreiben eines Programms in PHP) zumindest gedanklich auseinandersetzen sollte! 

 
PFADE:

Wie wirken sich Befehle wie include() oder require() auf Pfade aus, wenn in der includet-file bereits Pfade berücksichtigt werden? Negativ, insoweit als  man beachten muss, dass die zu includierende Datei und die includierende Datei im selben Ordner liegen! 

… jede andere Variante (also wenn z.B.: die zu includierende Datei Inhalte aus einem anderem Ordner bezieht und selbst in einem extra Ordner liegt) führt nicht zum gewünschten Ergebnis!  

 
file_get_contents(): 

Was hat dieser Befehl mit include() usw. zu tun und was bewirkt er?  

 
Oft steht man vor dem Problem, einen Dateiinhalt als Variable zu definieren, weil diese Datei z.B.: immer wieder neu mit Inhalten beschrieben (etwa bei einem CMS eine URL-Änderung der HP, für die das CMS gilt oder die E-Mail-Adresse usw.).  

 
Aber am besten ist ein praktisches Beispiel: 

 
mail.txt: 

peter@web.de 

adress.php: 

 
mit include(), require() … kommen wir jetzt nicht weiter, wenn wir die E-Mail-Adresse als Variable in adress.php verwenden wollen.  

 
<?$mail=include(’mail.txt’); echo ‘Peters Mailadresse ist: ’.$mail;?> <- das klappt nicht! 

<?$mail=file_get_contents(’mail.txt’); echo ‘Peters Mailadresse ist: ’.$mail;?> <- das klappt! 

Jetzt kann man in der *.txt jederzeit (z.B.: im Frontend mit ’w’)  die Mailadresse ändern (z.B.: bei EmailWechsel) und sie würde überall zur Verfügung stehen, wenn die *.txt mit dem obigen Befehl ‚includet’ wurde! 

 
Ausführlicheres (samt verwandten Befehlen) im Handbuch: http://at.php.net/manual/de/function.file-get-contents.php 


Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von AustrianKiller
  • 12.07.2011 - 09:24

ich bin ein Anfänger und verstehe das ganze tutorial sehr gut. es ist sehr verständlich und nicht verwirrend.

Portrait von Zeiflex
  • 02.01.2009 - 16:29

Die Idee dieses Tuts finde ich wirklich super. Der Unterschied zwischen include und require ist auch wohl verständlich, aber ich glaueb für Anfänger wird es vor allem in den Nächsten Abschnitten etwas verwirrend. ;)

x
×
×