studyklar
IProg · Skript 5 · Abschnitt 1

Dateien in PHP: einbinden, lesen, schreiben

Ein PHP-Skript steht selten allein. Es holt Code aus anderen Dateien und liest oder schreibt Textdateien. Hier steht, wie das geht und was passiert, wenn eine Datei fehlt. Rechts laufen die Beispiele mit ihrer echten Ausgabe. Mit Weiter geht es Schritt für Schritt voran.

Worum es geht

Skript 05, Folien 2–4: Einbinden von Dateien, Öffnen einer Datei, Lesen, Schreiben, Schließen.

Zwei Fragen: Wie benutzt ein Skript Code, der in einer anderen Datei steht? Und wie liest und schreibt es eine Textdatei auf dem Server?

Merke: Zum Einbinden gibt es vier Befehle: require, require_once, include, include_once. Zum Arbeiten mit einer Datei braucht es immer drei Schritte: öffnen, lesen oder schreiben, schließen.

So gehen wir vor:

  1. Eine Datei mit require einbinden.
  2. Was include und require bei einer fehlenden Datei tun.
  3. Wann eingefügt wird, und wozu _once dient.
  4. Eine Datei öffnen: Filehandle und Modus.
  5. Schreiben, anfügen, Zeile für Zeile lesen.
  6. Eine Klausurfrage dazu.

Eine Datei mit require einbinden

<?phprequire "demo.php";echo gruss("Anna"), "\n";
Hallo Anna

In demo.php steht eine Funktion gruss. Eine Funktion ist ein benanntes Stück Code, das man aufrufen kann; hier liefert sie einen Gruß als Text.

require "demo.php"; in Zeile 2 von main.php fügt den Inhalt von demo.php an genau dieser Stelle ein. Danach kennt main.php die Funktion und ruft sie in Zeile 3 auf.

Wozu das gut ist: Code, den viele Seiten brauchen (etwa die Verbindung zur Datenbank), steht nur einmal da. Jede Seite bindet ihn ein.

Aus Skript 04, Folie 11: PHP-Code steht zwischen <?php und ?>; alles außerhalb gibt PHP unverändert aus.

Darum beginnt auch demo.php mit <?php. Das schließende ?> darf am Dateiende fehlen.

Wenn die Datei fehlt

Skript · Folie 2

Bei fehlender Datei führt der Aufruf: include ⇒ Warning, require ⇒ Error.

<?phpinclude "fehlt.php";echo "weiter\n";
Warning: include(fehlt.php): Failed to open stream: No such file or directory in …/fehlt-include.php on line 2
Warning: include(): Failed opening 'fehlt.php' for inclusion (include_path='…') in …/fehlt-include.php on line 2
weiter
<?phprequire "fehlt.php";echo "weiter\n";
Warning: require(fehlt.php): Failed to open stream: No such file or directory in …/fehlt-require.php on line 2
Fatal error: Uncaught Error: Failed opening required 'fehlt.php' (include_path='…') in …/fehlt-require.php:2

include fügt eine Datei genauso ein wie require. Der Unterschied zeigt sich erst, wenn die Datei nicht da ist.

  • include meldet eine Warning (Warnung). Das Skript läuft weiter; weiter steht in der Ausgabe.
  • require meldet einen Fatal error (schweren Fehler). Das Skript bricht sofort ab; weiter erscheint nie.

Faustregel: require für Dateien, ohne die die Seite nicht funktionieren kann. Fehlt sie, ist ein Abbruch besser als eine halbe Seite. Folie 2 rät außerdem: include nur für „saubere“ Code-Blöcke, die für sich allein vollständig sind.

Noch 10 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1Dateien einbinden

require und include

demo.php

<?phpfunction gruss($name) {  return "Hallo $name";}

main.php

<?phprequire "demo.php";echo gruss("Anna"), "\n";
LegendeZeilen des SchrittsZwei Dateien: demo.php enthält eine Funktion, main.php bindet sie ein.