Datei importieren
Zugriff auf eine Datei
require "$datei" / include "$datei"
Es gibt Scripts, die möchte ich immer wieder verwenden aber nicht immer wieder schreiben. Also lagere ich sie in eine Datei aus, so entsteht eine Scriptbibliothek, die ich von diversen Seiten her immer wieder einlesen kann.
Z.B. ein PHP-Script welches die Verbindung zum MySQL-Server herstellt (siehe MySQL),
oder eine Debug-Routine, eine Klasse mit vielen Variablen und Funktionen, oder ein Headbanner mit Navigation, etc.
Diese Scripts können als eine externe Datei gespeichert werden und über 'require' oder 'include' in die verarbeitende Datei geladen werden.
Wenn ein solches Script verändert werden muss (weil z.B. der Pfad zum Datenbankserver ein anderer wird),
dann muss ich nicht in allen Dateien welche es verwenden suchen und ersetzen gehen, sondern kann das zentral und einmalig erledigen.
Die Datei kann eine beliebige Endung haben. Nebst *.php, *.inc und *.txt ginge auch *.quark
So wird eine Datei herein geholt:
Mit den Statements require oder include wird eine externe Datei vollständig eingebunden.
<?php
// richtig
require "datei_required.php"; // Statement
// so falsch wie echo("Bla")
require ("datei_required.php"); // Funktion
?>
Darin enthaltener Text wird ausgegeben und HTML Code wird ausgeführt, in einer Textarea und in einem Container ausgegeben sieht das so aus:
So sieht die Datei aus:
<?php $Variabli = "Ich bin ein String in einer PHP Variablen <br />\nin der Datei 'datei_required.php'"; ?> Ich bin ein Text in der Datei 'datei_required.php' mit <strong>HTML</strong> Code. <?php $stop = "Ich bin Text vor return"; return $stop; echo "Ich bin Text nach return"; ?>
PHP-Code (in PHP-Script-Tags) wird geparst (ausgeführt). Ausgegeben wird nichts in php-Tags, es sei denn es wäre ein echo Statement programmiert. Die Variable wurden jedoch eingelesen und können ausgegeben werden:
<?php
echo $Variabli;
?>
in der Datei 'datei_required.php'
Rückgabewert
Wie eine Funktion kann auch eine eingebundene Datei einen Rückgabewert liefern, und wie dort bewirkt die return-Anweisung den Stop der Ausführung des nachfolgenden Codes in der eingebundenen Datei.
In der eingebundenen Datei datei_required.php steht nämlich zudem:
<?php
$stop = "Ich bin Text vor return";
return $stop;
echo "Ich bin Text nach return";
?>
Der Rest der Datei nach return wird aber nicht mehr beachtet:
<?php
print $stop;
?>
Nur einmal laden
require_once() und include_once()
Damit man eine Datei nicht 2x lädt - weil diese Einbindungs-Befehle in fast jedem Script vorkommen - gibt es auch die Befehle:
require_once() und include_once()
Fehlermeldung
Der kleine Unterschied von 'include' zu 'require' ist der, dass 'require' bei einem Fehler alles sofort abbricht (Fatal Error), wärend 'include' das PHP-Script nach der Fehlermeldung (Warning) weiter abarbeitet (und unter Umständen -zig weitere Fehlermeldungen folgen lässt).
Includepfad ändern
set_include_path()
Wenn die einzuschliessenden Dateien in einem seperaten Ordner liegen,
kann jener Ordner einer internen Liste hinzugefügt werden, in der PHP Dateien sucht.
Irgendwo am Anfang des Scripts kommt die Pfad-Anweisung,
angenommen die Includedateien sind im Ordner includes:
set_include_path($_SERVER['DOCUMENT_ROOT'] . 'php/includes' . PATH_SEPARATOR . GET_INCLUDE_PATH());
Das File wird dann nur noch so eingebunden:
include(myInclude.php);
Wenn Sie dies lesen können, hat das Einbinden funktioniert.
Verwandte Themen
file_get_contents()
$cont=file_get_contents('datei_required.php');
echo $cont;
file_get_contents() holt eine Datei als String, in einer Textarea und in einem Container ausgegeben sieht das so aus:
Möchte ich den Inhalt einer Datei in eine Datei schreiben, dann muss ich das so tun:
$fp = fopen ("$fileName","w+"); // neue Datei erzeugen
$cont=file_get_contents('originalDatei.php'); // Content holen
fputs($fp, $cont); // Content hineinschreiben
fclose ($fp); // Datei schliessen
file()
$arr=file('datei_required.php');
echo $arr[1];
file() holt eine Datei Zeile für Zeile als Array, in einer Textarea und in einem Container ausgegeben sieht das so aus:
\nin der Datei 'datei_required.php'";
readfile()
readfile('datei_required.php');
readfile() holt eine Datei und braucht kein echo, in einer Textarea sieht das so aus:
In einem Container ausgegeben sieht das ganz anders aus:
Und wie kann ich nur einen Teil aus einer Datei laden?
Das exakte auslesen eines spezifischen Inhaltes aus einer Datei, wird in der datei_lesen.php
und auch in counter.php praktiziert.