V. 8.6.1 (27.01.2012)

Infos

Download

Theorie PHP

Schnellsuche

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.

weiter zum nächsten Abschnitt