Kategorie PHP

Include versus Require

Lesezeit ca. 3 Min.

Dieser Artikel beschreibt den Unterschied zwischen den PHP Kontrollstrukturen Include versus Require.
Will man ausgelagerte PHP Script-Dateien in seine PHP Anwendung einbinden, so bietet PHP hierfür vier Kontrollstrukturen, die man dazu verwenden kann.
Zum einen include oder include_once. Zum anderen kann man require oder require_once verwenden. Im folgenden werden die Unterschiede dieser Kontrollstrukturen und ihre Verwendung näher durchleuchtet.

include

Die Kontrollstruktur include benötigt einen Dateinamen als Parameter. Sie sagt dem PHP interpreter, die als Parameter übergebene Datei einzulesen und dessen Inhalt so zu behandeln, als sei er Teil der aktuellen Source Datei.
Die per Parameter spezifizierte Datei kann sich entweder im aktuellen Verzeichnis oder im include_path befinden. Wenn ein Verzeichnispfad zusammen mit der einzufügenden Datei angegeben wird — entweder absolut (beginnend mit einem Laufwerksbuchstaben oder \ unter Windows, oderr / unter Unix/Linux Betriebssystemen) oder relativ zum aktuellen Verzeichnis (beginnend mit . oder ..) wird der include_path ignoriert.

Wenn eine Datei eingebunden wird, wechselt der Parser am Anfang der eingebundenen Datei in den HTML-Modus und am Ende wieder in den PHP-Modus. Aus diesem Grund muss jeder PHP-Code in der eingebundenen Datei mit gültigen PHP-Start- und -Endtag umschlossen sein.

Die Verwendung von include ist problematisch, weil PHP jedes Mal, wenn es auf diesen include stößt, die Datei neu geladen wird. Dies verbraucht unnötig mehr Arbeitsspeicher und ist damit langsamer und ineffizient. Außerdem werden bereits definierte benutzerdefinierte Funktionen nochmals definiert. Da dies jedoch in PHP nicht gestattet ist, wird vom Parser eine Fehlermeldung erzeugt. Um dieses Problem zu umgehen, kann man stattdessen include_once verwenden.

include_once

Bei der Verwendung von include_once prüft PHP, ob die einzubindende Datei bereits im Speicher geladen wurde. Wurde sie bereits geladen, wird der Befehl ignoriert. Aus Speicherplatzgründen ist include_once der Nutzung von include vorzuziehen.

Allerdings ist dies auch nicht immer die beste Lösung, weil include und include_once nicht darauf achten, ob die zu ladende Datei überhaupt vorhanden ist. Ist die Datei nicht vorhanden, erzeugen beide Kontrollstrukturen lediglich eine Warnung, die im Programmablauf nicht sichtbar ist und damit keinen Hinweis auf das bestehende Problem geben. Um dieses Problem zu umgehen, sollte man require verwenden.

require

PHP erzeugt einen Laufzeitfehler und unterbricht die weitere Ausführung des Programmes, wenn man require anstelle von include verwendet und die zu ladende Datei nicht vorhanden ist. Dadurch kann der Entwickler das Problem beheben, bevor die fertige Anwendung in Produktion geht.

Jedoch hat require das gleiche Problem, wie include, weil es die Datei jedes Mal lädt, wenn PHP auf ein require trifft. Die einzige Möglichkeit, ein Nachladen zu verhindern, besteht darin, require_once zu verwenden.

require_once

Genau wie sein Gegenstück include_once, lädt require_once eine Datei nur ein einziges Mal in den Speicher, unabhängig, wie oft die Kontrollstruktur aufgerufen wird. Jedoch erzeugt es, im Gegensatz zu include, eine Fehlermeldung, wenn die zu ladende Datei nicht vorhanden ist.

Und damit wären wir am Ende des Vergleichs Include versus Require. require_once die besten Eigenschaften von beiden Varianten und stellt damit den idealen Weg dar, um Dateien in ein PHP Skript nachzuladen.

Ähnliche Artikel:

Fragen oder Feedback zu diesem Artikel

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert