Suche nach als

Datei importieren

Auf dieser Seite:

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:

Ich bin ein Text in der Datei 'datei_required.php' mit HTML Code.

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;
?>
Ich bin ein String in einer PHP Variablen
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;
?>
Ich bin Text vor return

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);

Diese Datei dient dem Test von set_include_path().
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:

\nin der Datei 'datei_required.php'"; ?> Ich bin ein Text in der Datei 'datei_required.php' mit HTML Code.

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:

$Variabli = "Ich bin ein String in einer PHP Variablen
\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:

\nin der Datei 'datei_required.php'"; ?> Ich bin ein Text in der Datei 'datei_required.php' mit HTML Code.

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.


Valid XHTML 1.0 Check den Code.

Datei lesen >> << Datei Info
Ich bin hier: > PHP Lehrling >>> Datei importieren
 
HTML und XHTML | CSS | JavaScript und DHTML | PHP und MySQL | Andere Sprachen
Letzter Update: 25.08.2010