PHP und HTML dynamisch einbinden
Ähnlich wie man ein CSS Stylesheet oder ein JavaScript im Browser per Link Tag einbinden kann, um es auf mehreren HTML Seiten zu verwenden, kann auch HTML oder PHP Code (oder eigentlich: jedes Plain-Text-Format) mit PHP eingebunden werden. Die Funktionen include und require funktionieren so, als würde der eingebundene Code durch den PHP Parser an die Stelle kopiert, an der der Einbindungs-Aufruf stattfindet.
Wieso gibt es mehrere Funktionen?
Include und Require machen prinzipiell genau das gleiche. Allerdings gibt es Unterschiede im Handling, durch welche sie sich für unterschiedliche Anwendungen besser oder weniger gut eignen. Die Unterschiede beziehen sich auf zwei Punkte:
- wie was passiert, wenn die einzubindende Datei unter dem genannten Pfad nicht existiert (soll weitergefahren werden oder nicht?)
- was passiert, wenn die Datei mehrmals im selben Script einbebunden wird (soll dies erlaubt sein oder nicht?)
Nachfolgend findest du eine Aufstellung zu den Möglichkeiten
| Funktion | Datei fehlt | mehrfach einbinden | Anwendung |
|---|---|---|---|
| include() | ignorieren | ja | HTML Partials, optionaler PHP Code |
| include_once() | ignorieren | nein | Partials, CSS, JS Libraries |
| require() | Fehler | ja | Benötigter PHP Code |
| require_once() | Fehler | nein | Config File, PHP Libraries (Funktionsdefinitionen) |
So geht's
Wir erstellen eine Demo mit eingebundenem Code.
- Erstelle dir drei Files wie folgt:
- index.php: ein Haupt-File mit folgendem HTML Code
<html> <body> <h1>Dies ist mein Haupt HTML</h1> </body> </html> - partial.php: ein File mit diesem HTML Snippet (Partial)
<p>Partial (HTML Code)</p> - function.php: ein File mit diesem PHP Code:
function writeCode(){ return 'Partial (PHP) output'; }
- index.php: ein Haupt-File mit folgendem HTML Code
- im Haupt-File mit dem HTML binde nun das Partial ein, und zwar gleich zwei mal:
<html> <body> <h1>Dies ist mein Haupt HTML</h1> <?php include("partial.php"); ?> <?php include("partial.php"); ?> </body> </html> - binde nun im Haupt-File das PHP-File mit der Funktion ein (oberhalb des HTML Output):
<?php require_once('function.php'); ?> - Rufe nun die Funktion aus dem eingebundenen File irgendwo im Body des HTML auf:
<html> <body> <h1>Dies ist mein Haupt HTML</h1> <?php include("partial.php"); ?> <p><?php echo writeCode(); ?></p> <?php include("partial.php"); ?> </body> </html>
Komplettes Skript
<?php
require_once('function.php');
?>
<html>
<body>
<h1>Dies ist mein Haupt HTML</h1>
<?php include("partial.php"); ?>
<p><?php echo writeCode(); ?></p>
<?php include("partial.php"); ?>
</body>
</html>Tips und Links
Teste die verschiedenen Einbindungs-Möglichkeiten mit dem Function File:
- was passiert, wenn du diese Zeile ein zweites mal ausführst?
require_once( "function.php" ) - was passiert, wenn du beide male statt require_once() einfach require() verwendest?
Anstatt HTML oder PHP Code mehrfach zu schreiben, kannst du den Code so einbinden. So vermeidest du Redundanz (mehrfach das gleiche zu schreiben).