require, include, require_once, include_once in PHP: vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

require, include, require_once, include_once in PHP: Was ist der Unterschied und warum ist das wichtig?

\n\n

Hast du dich auch schon mal gefragt: „Was ist eigentlich der Unterschied zwischen require und include in PHP? Und wozu gibt es die _once-Varianten?“ – Wenn ja, bist du nicht allein. Diese Frage gehört zu den Top-Fragen auf Stack Overflow (tausende Aufrufe, dutzende Upvotes). Und das aus gutem Grund.

\n\n

Täglich nutzen tausende PHP-Entwickler – vom Anfänger bis zum Profi – diese Funktionen. Aber viele verwenden sie automatisch, ohne über die Konsequenzen nachzudenken. Ein Fehler. Die falsche Wahl kann zu fatalen Fehlern, Code-Duplikaten oder, noch schlimmer, zu schwer findbaren Bugs führen, die erst auf dem Live-Server auftauchen.

\n\n

Heute klären wir ein für alle Mal, wie sich require, include, require_once und include_once unterscheiden. Du bekommst nicht nur die Theorie, sondern auch lauffähige Code-Beispiele. Los geht's!

\n\n

1. Grundlagen: Warum überhaupt Dateien einbinden?

\n\n

Bevor wir zu den Unterschieden kommen, erinnern wir uns, warum wir das tun. In echten Projekten schreibt man PHP-Code nicht in eine einzige riesige Datei. Das wäre ein Albtraum für die Wartbarkeit. Stattdessen wird der Code in Module aufgeteilt:

\n\n
    \n
  • Konfiguration – config.php
  • \n
  • Funktionen – functions.php
  • \n
  • Templates – header.php, footer.php
  • \n
  • Klassen – User.php, Database.php
  • \n
\n\n

Und genau hier kommen require und include ins Spiel. Sie „kleben“ den Inhalt einer Datei in eine andere. PHP verarbeitet die eingebundene Datei so, als wäre ihr Code direkt an dieser Stelle geschrieben.

\n\n

2. require vs include: Der Hauptunterschied – Reaktion auf Fehler

\n\n

Das ist der wichtigste Punkt. Merk ihn dir für immer.

\n\n

include – sanftes Einbinden

\n\n

include versucht, die Datei einzubinden. Existiert die Datei nicht oder tritt ein Fehler auf, gibt PHP eine Warning (Warnung) aus, setzt das Skript aber fort.

\n\n
<?php\n// include.php\necho "Das ist include. ";\ninclude 'nicht_existierende_datei.php'; // Löst eine Warning aus\necho "Das Skript läuft weiter!";\n?>\n
\n\n

Ergebnis:

\n
Das ist include. Warning: include(nicht_existierende_datei.php): failed to open stream...\nDas Skript läuft weiter!
\n\n

Siehst du? Das Skript stürzt nicht ab, sondern läuft weiter. Das ist praktisch, wenn das Einbinden optional ist. Zum Beispiel, wenn du ein Widget einbindest, das nicht kritisch für die Seite ist.

\n\n

require – striktes Einbinden

\n\n

require macht dasselbe, aber mit einem Unterschied: Wird die Datei nicht gefunden, gibt PHP einen Fatal Error (schwerwiegenden Fehler) aus und bricht das Skript sofort ab.

\n\n
<?php\n// require.php\necho "Das ist require. ";\nrequire 'nicht_existierende_datei.php'; // Löst einen Fatal Error aus\necho "Dieser Code wird nie ausgeführt!";\n?>\n
\n\n

Ergebnis:

\n
Das ist require. Fatal error: Uncaught Error: Failed opening required 'nicht_existierende_datei.php'...
\n\n

Das Skript ist tot. Ende. Stille.

\n\n

Wann verwendet man was?

\n
    \n
  • require – für kritische Dateien: DB-Konfiguration, Hauptklassen, Router. Ohne sie kann die Seite nicht funktionieren.
  • \n
  • include – für optionale Blöcke: Templates, Widgets, Werbebanner. Wenn die Datei fehlt, wird die Seite einfach ohne diesen Block angezeigt.
  • \n
\n\n

3. require_once und include_once: Schutz vor Duplikaten

\n\n

Stell dir folgende Situation vor. Du hast eine Datei config.php, die Konstanten und Funktionen definiert. Du b

Blogs

Buchempfehlungen