Andere PHP-Dateien importieren (Thema: PHP Beispiele)

Wie Code aus anderen PHP-Dateien eingeladen werden kann

1. Erläuterungen

Zum Einbinden von anderen Dateien, welche PHP-Code enthalten, können die Kontrollstrukturen include und require verwendet werden. Die Syntax ist vergleichbar zu „echo”:

PHP-Code
// fuer include:
include 'dateiname.php';

// fuer require:
require 'dateiname.php';

Es können sowohl absolute als auch relative Pfade angegeben werden. Wird gar kein Pfad angegeben, dann wird nach der Datei zunächst im Pfad unter include_path gesucht, danach im Verzeichnis der Datei, die das include/require enthält.

Im Gegensatz zu anderen Sprachen müssen include und require nicht zwangsweise am Anfang der Datei stehen. Auch die Platzierung mitten im Code ist erlaubt. Ebenso müssen die eingebundenen Dateien nicht zwangsweise Klassen enthalten, sondern können auch prozeduralen Code beherbergen, der dann sofort ausgeführt wird.

Um zu verhindern, dass Dateien mehrfach eingebunden werden kann auf include_once und require_once zurückgegriffen werden, welche jeweils eine Datei nur maximal ein Mal einladen, egal wie oft sie aufgerufen werden.

1.1. Unterschied zwischen include und require

Der Unterschied zwischen include und require liegt einzig in ihrem Verhalten falls die angegebene Datei nicht gefunden werden kann. Sollte dies passieren beendet require sofort die Skriptausführung, während include nur eine Warnung erzeugt und den weiteren Code ausführt. Tendenziell wird include häufiger verwendet, je nach Anwendungsgebiet kann aber auch require sinnvoll sein.

Kontrollstruktur Falls Datei nicht gefunden wird
include Warnung
require Fatal Error (Skript wird beendet)

2. Beispiele

2.1. Eine ausgelagerte Ausgabe

Eine Beispieldatei in die etwas Code ausgelagert wurde:

PHP-Code: ausgelagert.php
<?php
	// ausgelagert.php
	echo("Diese Nachricht stammt aus ausgelagert.php \n");
?>

Verwendung des Codes:

PHP-Code
<?php
	// test.php
	echo("Diese Nachricht stammt aus test.php \n");
	include 'ausgelagert.php';
	require 'ausgelagert.php';
?>

HTML-Code: Ausgabe
Diese Nachricht stammt aus test.php 
Diese Nachricht stammt aus ausgelagert.php 
Diese Nachricht stammt aus ausgelagert.php 


Wie zu sehen, müssen includes/requires nicht zwangsweise am Anfang der Datei stehen.

2.2. Funktion aus einer anderen Datei einbinden

Eine Beispieldatei mit einer Funktion, welche die Zahlen von 1 bis 10 ausgibt:

PHP-Code: myfunction.php
<?php
	// myfunction.php
	function echoOneToTen() {
		for ($x=0; $x<10; $x++) {
			echo($x . "\n");
		}
	}
?>

Diese Datei (test.php) bindet die vorherige Funktion über ein include ein:

PHP-Code: test.php
<?php
	// test.php
	include 'myfunction.php';
	echo("Alle Zahlen von 0 bis 10: \n");
	echoOneToTen();
?>

Ausgabe von test.php:

HTML-Code: Ausgabe
Alle Zahlen von 0 bis 10: 
0
1
2
3
4
5
6
7
8
9


2.3. Eine Klasse aus einer anderen Datei includen

Eine Beispieldatei mit einer einfachen Klasse:

PHP-Code: HelloWorld.php
<?php
	// HelloWorld.php
	class HelloWorld {
		public function hello() {
			echo("Hello World from class HelloWorld! \n");
		}
	}
?>

Nun wird diese Klasse in einer ganz anderen Datei verwendet:

PHP-Code: test.php
<?php
	// test.php
	include 'HelloWorld.php';
	$hw = new HelloWorld();
	$hw->hello();
?>

Ausgabe von test.php:

HTML-Code: Ausgabe
Hello World from class HelloWorld! 


2.4. include vs include_once

Insbesondere wenn man Funktionen oder Klassen einbindet, können include_once und require_once hilfreich sein, um Fehler durch mehrmaliges Einladen der Datei zu unterbinden.

Eine Beispieldatei mit einer leeren Klasse:

PHP-Code: Example.php
<?php
	// Example.php
	class Example { }
?>

Mehrmaliges Einladen der Klasse mit include:

PHP-Code: test.php
<?php
	// test.php
	include 'Example.php';
	include 'Example.php';
	echo("ende erreicht");
?>

Ausgabe von test.php:

HTML-Code: Ausgabe
Fatal error: include() [<a href='function.include'>function.include</a>]: Cannot redeclare class example in test.php on line 4


Da die Klasse mehrmals eingeladen und damit definiert wird, entsteht ein Fatal Error. Mit include_once lässt sich das vermeiden.

PHP-Code: test.php
<?php
	// test.php
	include_once 'Example.php';
	include_once 'Example.php';
	echo("ende erreicht");
?>

HTML-Code: Ausgabe
ende erreicht

2.5. include vs require

Nachfolgend wird der Unterschied zwischen include und require dargestellt. Während include nur eine Warnung erzeugt falls die angegebene Datei nicht gefunden wird, bricht require den kompletten Ablauf des Skripts mit einem Fatal Error ab.

Verhalten bei include, falls die Datei nicht gefunden wird:

PHP-Code: test.php
<?php
	// test.php

	// alle eventuallen Fehler anzeigen
	error_reporting(E_ALL);

	// eine nicht existierende Datei einbinden
	include 'existiert_nicht.php';

	echo("ende erreicht");
?>

HTML-Code: Ausgabe
<br />
<b>Warning</b>:  include(existiert_nicht.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in <b>...\test.php</b> on line <b>8</b><br />
<br />
<b>Warning</b>:  include() [<a href='function.include'>function.include</a>]: Failed opening 'existiert_nicht.php' for inclusion (include_path='.') in <b>...\test.php</b> on line <b>8</b><br />

ende erreicht

Verhalten bei require, falls die Datei nicht gefunden wird:

PHP-Code
<?php
	// test.php

	// alle eventuallen Fehler anzeigen
	error_reporting(E_ALL);

	// eine nicht existierende Datei einbinden
	require 'existiert_nicht.php';

	echo("ende erreicht");
?>

HTML-Code: Ausgabe
<br />
<b>Warning</b>:  require(existiert_nicht.php) [<a href='function.require'>function.require</a>]: failed to open stream: No such file or directory in <b>...\test.php</b> on line <b>8</b><br />
<br />
<b>Fatal error</b>:  require() [<a href='function.require'>function.require</a>]: Failed opening required 'existiert_nicht.php' (include_path='.') in <b>...\test.php</b> on line <b>8</b><br />

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung. OK