PHP - Befehle - Einbindung
1. Einführung
PHP bietet uns die Möglichkeit, andere PHP-Dateien in ein Script einzubinden und auszuführen. Damit haben wir die Möglichkeit, bei größeren Projekten bestimmte Bereiche in separate Dateien auszulagern und bei Bedarf zu nutzen. Das beste Beispiel dafür sind die Zugangsdaten für eine MySQL-Datenbank. Wenn man lokal eine Anwendung programmiert, so hat man mit ziemlicher Sicherheit andere Zugangsdaten, als wenn die Anwendung online bei einem Provider läuft. Also erstellt man ein separate Datei mit Benutzernamen, Passwort usw., bindet diese in die jeweiligen Scripte ein und muss dann später nur an einer Stelle die Werte ändern, wenn die Anwendung scharf geschaltet wird.
Der Pfad zur einzubindenden Datei kann relativ oder absolut angegeben werden. PHP-Dateien von einer anderen URL können nur in
Ausnahmefällen eingebunden werden. Nämlich dann, wenn der eigene(!) Webserver dies gestattet. Das nennt sich
allow_url_fopen und kann nur in der php.ini geändert werden. Also geht mal nicht davon aus.
Grundsätzlich gibt es zwei Möglichkeiten, die sich nur durch die Fehlerbehandlung unterscheiden.
2. include, include_once
Bindet eine andere Datei ein. Bei Fehlern in dieser Datei oder einem falschen Pfad wird eine Warnung ausgegeben, der folgende Code aber
trotzdem ausgeführt. Der Unterschied von include und include_once besteht darin, dass include_once
eine bereits eingebundene Datei auf keinen Fall noch einmal inkludiert.
//db_data.inc.php
<?php
// lokale Zugangsdaten zu MySQL
$user = 'root';
$host = 'localhost';
$password = 'blabla';
$database = 'meine_test_db';
?>
//index.php
<?php
include ('db_data.inc.php');
?>
//index.php
<?php
include_once ('db_data.inc.php');
?>
3. require, require_once
Arbeitet genau so wie include, bis auf einen Unterschied. Taucht in der einzubindenden Datei ein Fehler auf oder ist diese
überhaupt nicht am angegebenen Ort vorhanden, so wird die weitere Bearbeitung des Scriptes mit einer "Fatal Error"-Meldung abgebrochen.
//db_data.inc.php
<?php
// lokale Zugangsdaten zu MySQL
$user = 'root';
$host = 'localhost';
$password = 'blabla';
$database = 'meine_test_db';
?>
//index.php
<?php
require ('db_data.inc.php');
?>
//index.php
<?php
require_once ('db_data.inc.php');
?>
4. Geltungsbereiche von Variablen
Wie bei Funktionen gilt auch hier dasselbe Prinzip, das ich bei den Grundlagen erläutert habe. Variablen, die in einer eingebundenen Datei nicht innerhalb einer Funktion deklariert wurden, stehen global im Hauptscript zur Verfügung.
5. Perfomance
Die _once-Varianten sind grundsätzlich langsamer als die anderen. Das liegt daran, dass PHP bei Ersteren immer eine Überprüfung vornimmt,
ob die schon eingebunden worden sind. Und das dauert halt ein wenig. Ist aber deutlich besser, da sonst ungewünschte Nebeneffekte
oder Fehler auftreten können.