PHP Tutorials, PHP lernen, PHP Forum, PHP Community and more ... MyWebsolution.de!

Sidebar

Home News Tutorials Workshops Tipps Artikel Gästebuch Sitemap Unicode

Suche

Members

Forum Login Registrierung

Statistik

Statistikbereich
Jetzt2
Heute26
Gestern239
Gesamt1541012

PHP include

Autor Flitze
Klicks 24525
Rating für PHP include
  3.5 von 10
Bewertungen4
Stand 11.06.2013
Keywords:
include(), PHP include, PHP includes, include php, include in PHP, PHP include in include, Pfad bei include

Amazon: PHP 5.3 und MySQL 5.1
Breadcrumb:
Tipps » PHP include
Seite : 1 Bewerten
Article Wizard - deutscher Article Spinner
In diesem Tipp möchte ich euch eine mächtig Technik von PHP vorstellen: Die Fähigkeit, andere Dateien zu inkludieren. Die entsprechende Funktion dazu lautet include(). Auf den ersten Blick weiß man die Vorteile von include() vielleicht gar nicht zu schätzen, aber PHP includes können einem PHP Programmierer das Leben ganz schön erleichtern.

Wie funktioniert include()?


Den PHP include einer Datei kann man sich so vorstellen, als würde man manuell per copy & paste eine Datei in einer andere kopieren. Das folgende Beispiel dient als Veranschaulichung.

Datei i_include.php
PHP:
<?php
  
echo "Hallo ";
  include 
"i_am_included.php";
  echo 
"Welt";
?>


Datei i_am_included.php
PHP:
<?php
  
echo "schöne neue ";
?>


Wenn ich nun die Datei i_include.php aufrufe, bekomme ich den folgenden Text ausgegeben:

Code:
Hallo schöne neue Welt


Wenn PHP die Dateien ausführt, macht es bei einem include() also tatsächlich nichts anderes, als den Text aus der einen Datei in die andere zu kopieren. Für den PHP Interpreter sieht es also so aus, als würde er den Quellcode
PHP:
<?php
echo "Hallo ";
echo 
"schöne neue ";
echo 
"Welt";
?>

abarbeiten.

Die erste Erkenntnis, die wir daraus ziehen ist: Es spielt eine Rolle, an welcher Stelle im Quellcode das include steht, denn an dieser Stelle wird der Code eingefügt.

PHP includes können aber noch mehr. Ich kann nämlich nicht einfach bloß Text ausgeben, sondern ich kann auch ganze PHP Skripte inkludieren, inklusive ihrer Funktionen und Variablen! Ich bediene mich zur Verdeutlichung dieser Aussage eines modifizierten Beispiels von php.net:

Datei vars.php
PHP:
<?php

$farbe 
'grün';
$frucht 'Apfel';

function 
ausgabe(){
  echo 
"Hallo Welt!";
}

?>


Datei test.php
PHP:
<?php

echo "Der $frucht ist $farbe."// Ausgabe: Der  ist .

include 'vars.php';

echo 
"Der $frucht ist $farbe."// Ausgabe: Der Apfel ist grün.
ausgabe(); // Ausgabe: Hallo Welt!

?>


Wir können also (und das ist einer der großen Vorteile von PHP includes) ganze Funktionalitäten auslagern und dadurch das PHP Projekt modular aufbauen. Dieser modulare Aufbau ermöglicht unter anderem:
  • PHP Entwicklerer können am gleichen Projekt gleichzeitig unabhängig voneinander an verschiedenen Dateien arbeiten.
  • Dateien können spezifisch für Funktionen erstellt werden. Das erhöht die Übersicht und späterer Wartbarkeit.
  • Bei Änderungen müssen lediglich kleine Dateien hochgeladen.
  • Dateien können logisch getrennt werden, zum Beispiel nach dem Model View Controller Prinzip


Anmerkung
Die Sache mit dem "kopieren" ist eigentlich nicht ganz korrekt, erleichtert aber das Verständnis der include Funktion. Real passiert folgendes:
  1. Der PHP Interpreter stößt auf den include Befehl
  2. Es wird versucht, die Datei zu finden (falls das nicht klappt gibt es eine Warnung)
  3. Der PHP Interpreter verlässt den PHP Modus
  4. Die inkludierte Datei wird interpretiert (deshalb muss diese auch mit <?php beginnen, wenn dort PHP Code drin steht)
  5. Die Ursprungsdatei wird weiter abgearbeitet


Probleme mit PHP includes


Die include Funktion erleichtert uns das Leben um einiges und bietet eine Menge toller Möglichkeiten. Allerdings gibt es auch einiges zu beachten, wenn man diese Funktion benutzt. Eines der häufigsten Probleme, das include in include Problem, möchte ich hier kurz vorstellen.

Wenn man der Funktion einen Pfad übergibt, dann wird dieser Pfad immer ausgehend von der aktuellen Position im Verzeichnisbaum des Webserver interpretiert. Das bedeutet, dass ihr darauf achten müsst, die richtige Pfadangabe zu machen. Nehmen wir man an, ihr hättet die folgende Ordnerstruktur
Code:
/include_1.php
/foo/include_2.php
/inc/i_am_included.php

Wenn ihr nun die Datei i_am_included.php inkludieren wollt, dann müsst ihr in der Datei include_1.php folgendes schreiben:

PHP:
<?php
  
include "inc/i_am_included.php";
?>


In der Datei include_2.php im ordner foo hingegen, müsstet ihr jetzt schreiben:

PHP:
<?php
  
include "../inc/i_am_included.php";
  
// durch das "../" wechselt ihr in das root Verzeichnis "/"
?>


Soweit so gut, richtig kompliziert wird es aber, wenn ihr include_2.php in include_1.php inkludieren wollt, also wenn ihr in include_1.php schreibt:

PHP:
<?php
include "inc/i_am_included.php";
include 
"foo/include_2.php";
?>


Wie ich oben erklärt habe, wird ja nun lediglich der Dateiinhalt in das neues Skript kopiert, so dass dort eigentlich stünde:

PHP:
<?php
  
include "inc/i_am_included.php";
  
// hier folgt nun der Inhalt von include_2.php
  
include "../inc/i_am_included.php";
?>


Das Problem wird offensichtlich: Dadurch, dass ich den Inhalt von include_2.php nun in include_1.php ausführen will, passt der Pfad nicht mehr, den ich vorher in include_2.php gespeichert habe. Wenn ich den Pfad nun ändere, kann ich include_2.php aber nicht mehr direkt aufrufen – sonst würde der Pfad ja wieder nicht passen.

Zum Glück gibt es (für die meisten Fälle) eine einfache Lösung, um das Problem zu umgehen. Man benutzt einfach absolute Pfade statt relativer Pfaden. Dazu verwendet man die $_SERVER Variable $_SERVER['DOCUMENT_ROOT'], die den Pfad zum tatsächlichen Verzeichnis auf dem Webserver enthält. Die "korrigierten" Versionen von include_1.php und include_2.php sehen damit wie folgt aus:

PHP:
<?php
  
include $_SERVER['DOCUMENT_ROOT']."inc/i_am_included.php";
?>


Weiterführende Informationen zu includes findet ihr unter anderem auf


  Bewerten

»» Zurück zum Menu

Suchmaschinenoptimierung

Suchmaschinenoptimierung (SEO - Search Engine Optimization)

Ranking

Tutorials (13)

8.6
8.4
8.1

Workshops (3)

8.8
8.7
7.6

Tipps (13)

7.2
6.7
6.5

Artikel (26)

8.4
7.2
6.4

RSS Feeds

Full Feed Tutorials Workshops Tipps Artikel

Twitter

Follow me on Twitter

Partner & Links


Valid HTML 4.01 Transitional
Valid CSS
nach oben

Diese Seiten unterstützen MyWebsolution:
 
© MyWebsolution.de
2006-2016