PHP erfordert eine einmalige Beschreibung. Was ist besser zu verwenden: erfordern oder einschließen? Wenn include oder require nicht funktioniert

Eine der unterhaltsamsten und nützlichsten Funktionen von PHP ist das Einbinden einer weiteren Datei. Beispielsweise verfügt eine Website über ein oberes Menü, ein unteres Menü und dazwischen den Seiteninhalt selbst. Und zum Beispiel wird auf 10 Seiten der Site das untere Menü verwendet. Irgendwann mussten Änderungen daran vorgenommen werden. In HTML würden Sie manuell Änderungen in jeder einzelnen Datei vornehmen, aber PHP ermöglicht Ihnen eine deutliche Vereinfachung der Arbeit mit der Site! Der Code für das untere Menü kann in einer separaten Datei enthalten sein, und auf jeder der 10 Seiten können Sie diese separate Datei einfach einbinden! Das heißt, alle Änderungen müssen jetzt nur noch an der Datei mit dem Menü vorgenommen werden, bei 10 anderen wird es mit den Änderungen angezeigt.

Die Bedeutung der Verbindung in PHP in einfacher russischer Sprache:

Datei 1.php
Hauptmenü

Datei 2.php
Unteres Menü

example.php-Datei
Verbinden Sie Datei 1.php
Seiteninhalt
Verbinden Sie Datei 2.php

Als Ergebnis der Verarbeitung der Datei example.php wird diese angezeigt
Hauptmenü
Seiteninhalt
Unteres Menü
Um im unteren Menü etwas zu ändern, müssen Sie dementsprechend nur Änderungen in der 2.php-Datei vornehmen

Der Pfad zur Datei

Die Datei wird entsprechend dem für die Datei angegebenen Pfad verbunden. Es gibt zwei Pfadoptionen: relativ und absolut. Relativ – Dies ist eine Angabe des Pfads zur verbundenen Datei relativ zur Datei mit den Verbindungsanweisungen. Absolut – Angabe des vollständigen Pfads zur enthaltenen Datei.

PHP-Code

// Beispiel für einen relativen Pfad
include „include/your_file.php“; // Die Datei befindet sich im Include-Ordner, der sich im selben Verzeichnis wie die Verbindungsdatei befindet

// Beispiel für einen absoluten Pfad
include $_SERVER["DOCUMENT_ROOT"]."/include/your_file.php"; // $_SERVER["DOCUMENT_ROOT"] – gibt das Stammverzeichnis der Site an

include und include_once

enthalten()– ein Konstrukt, das dazu dient, Dateien während der Ausführung des PHP-Skripts in den PHP-Skriptcode einzubinden. Bei der Verarbeitung des Codes wird die Anweisung durch den Inhalt der angehängten Datei ersetzt. Ich schlage vor, sich gleich ein Beispiel anzusehen.

Sehen wir uns die Funktionsweise von include am Beispiel zweier Dateien an: index.php Und text.php. Nehmen wir zur Vereinfachung der Arbeit an, dass sie sich im selben Verzeichnis befinden.

PHP-Code(Datei index.php)

Echo „Klartext in der Hauptdatei enthalten“;
„text.php“ einschließen; // den Inhalt der Datei text.php einschließen

?>
PHP-Code(Datei text.php)

Echo „In der eingebundenen Datei enthaltener Text“;

?>
Das Ergebnis der Ausführung der Datei index.php ist:

Nur in der Hauptdatei enthaltener Text
Text, der in der eingebundenen Datei enthalten ist
Ist es wirklich praktisch? Wenn Sie nun den Inhalt der Datei text.php ändern, wird das Ergebnis von index.php völlig anders sein!

Lassen Sie uns nun über ein anderes Design sprechen – include_once. Es funktioniert genauso wie include, wird jedoch später erstellt und für die Fälle, in denen die Datei nicht erneut eingebunden werden kann. Sie befürchten beispielsweise, dass Sie aufgrund eines Fehlers eine Datei zweimal oder mehrmals verknüpfen, was dazu führt, dass die Seite nicht ordnungsgemäß funktioniert und eine entsprechende Fehlermeldung angezeigt wird.

PHP-Code

Include_once „text.php“; // Die Datei text.php wird nur einmal eingebunden

// Wiederverbindungen unten werden nicht berücksichtigt und angezeigt
// und es wird keine Fehlermeldung angezeigt
include_once „text.php“; // Nichts wird passieren

require und require_once

Die Anweisungen „require“ und „require_once“ funktionieren genauso wie „include“ und „include_once“, mit Ausnahme einer einzigen Funktion: Wenn die eingebundene Datei nicht gefunden wird, wird die Skriptausführung gestoppt (das Skript wird nicht mehr gelesen), während „include“ und „include_once“ lediglich eine Warnung anzeigen und setzen Sie die weitere Ausführung des Skripts fort.

Wenn include oder require nicht funktioniert

Um die Gründe zu verstehen, warum das Einbinden nicht funktioniert, empfehle ich, alles Schritt für Schritt zu überprüfen. Egal wie klar und oberflächlich die folgenden Punkte auch sein mögen, überprüfen Sie alles von Anfang an

1. Überprüfen Sie, ob Ihr Server und PHP funktionieren und ob PHP-Code auf der Website überhaupt funktioniert
2. Überprüfen Sie, ob die Include-Datei vorhanden ist
3. Überprüfen Sie, ob der Dateiname und die Erweiterung in der Verbindung korrekt eingegeben sind
4. Stellen Sie sicher, dass sich die eingebundene PHP-Datei tatsächlich an der von Ihnen angegebenen Adresse befindet
5. Versuchen Sie, einen absoluten Pfad (den vollständigen Pfad zur Datei) anstelle eines relativen Pfads anzugeben.

Beispiel PHP-Code

Fügen Sie „http://www.example.com/include/your_file.php“ ein;

// DOCUMENT_ROOT – bezeichnet das Stammverzeichnis der Ressource
include $_SERVER["DOCUMENT_ROOT"]."/include/your_file.php";

6. Wenn Ihre Datei keine Verbindung herstellt und kein Fehler angezeigt wird, erstellen Sie im Verzeichnis mit der Datei, die Sie verbinden, eine Datei .htaccess mit folgendem Inhalt

PHP_flag display_errors Ein
oder in PHP-Datei Fügen Sie vor dem Verbinden die folgende Zeile ein

Error_reporting(E_ALL);
Beide Einstellungen erzwingen die Anzeige von Fehlern

Seitenlayouts

13.22. require()-Operator

Die require()-Anweisung funktioniert ähnlich wie die Präprozessoranweisung #include() in der Programmiersprache C++. Wenn Sie mit dieser Sprache vertraut sind, wird Ihnen die Beherrschung der folgenden Operatoren nicht schwer fallen, aber auch wenn Sie nicht vertraut sind, werden wir versuchen, die Funktionsprinzipien dieser Operatoren detaillierter zu beschreiben. Der require()-Operator ersetzt und ruft den Inhalt der Dateien auf, deren Pfad und Name im Operatorblock angegeben wurden:

require("path/filename.html");

Wenn die PHP-URL-Parameter fopen_wrapper_SB auf „Enabled“ gesetzt sind (normalerweise sind sie Standard), können Sie die Datei in der require()-Anweisung auch mithilfe einer URL (Uniform Resource Locator) definieren, anstatt den lokalen Pfad zur erforderlichen Datei in zu verwenden require()-Anweisung. Zum Beispiel:

$url = http://meine_neue_adresse/index.phtml;

Die require()-Anweisung ist keine Funktion. Höchstwahrscheinlich kann man es als Sprachkonstrukt bezeichnen. Warum können wir diesen Operator nicht als Funktion betrachten:

Require() ist keiner Kontrollstruktur untergeordnet;

Require() gibt im Gegensatz zu einer Funktion keinen Wert zurück.

Der Versuch, einen beliebigen Wert über eine require()-Anweisung aufzurufen, führt zu einem Fehler und unterbricht die weitere Programmausführung.

Im Gegensatz zu include liest require immer die Adresszeile der Datei, auch wenn sie nicht ausgeführt wird. Wenn Sie eine Datei bedingt einschließen müssen, verwenden Sie die Anweisung include(). Einfache bedingte Ausdrücke gelten bei der Arbeit mit der require-Anweisung nicht als wirksam. Wenn jedoch die Zeile, in der sich die requre-Anweisung befindet, nicht ausgeführt wird, wird keine einzige Codezeile in der Datei an dieser Adresse ausgeführt. Dies ist logisch, da der Zugriff auf die Datei in diesem Fall über den Operator require() erfolgt.

Schleifenausführungsstrukturen haben keinen Einfluss auf das Verhalten der require()-Anweisung, obwohl der in der resultierenden Datei enthaltene Code weiterhin der Schleife unterliegt. Daraus können wir schließen, dass die require-Anweisung im Gegensatz zu include() nur einmal ausgeführt wird.

Daher können Sie die require()-Anweisung nicht mit allen daran angehängten Anweisungen in einem Schleifenanweisungsblock platzieren und bei jeder Iteration unterschiedliche Ausführungen dieser Anweisung erwarten, während die Schleife ausgeführt wird. Um dies zu nutzen, empfehlen wir Ihnen, den Operator include() zu verwenden.

Wenn eine Datei mit einer require()-Anweisung ausgeführt wird, erbt der enthaltene cbd die Variablenfunktionen der Zeile, in der requre() ausgeführt wird. Alle in dieser Zeile verfügbaren Variablen sind in der aufgerufenen Datei verfügbar. Wenn sich eine Anforderungsanweisung innerhalb einer Funktion in einer aufrufenden Datei befindet, verhält sich der gesamte in der aufgerufenen Datei enthaltene Code so, als ob er darin definiert wäre

Wenn die require()-Anweisung an einer Datei arbeitet, die über HTTP aufgerufen wird und Fopen-Wrapper verwendet, und wenn die Stationsadresse die resultierende Datei als PHP-Code interpretiert, können Variablen mithilfe der URL-Anfrage an die require()-Anweisung übergeben werden , wie die HTTP-Get-Methode. Es ist nicht das gleiche. dass der Aufruf der Anforderungsanweisungsdatei, da das Skript praktisch die Ausführung des Skripts auf dem Remote-Server fortsetzt und die Ergebnisse dann in das lokale Skript eingefügt werden:

/* funktioniert nicht, da es nicht vom Server verarbeitet wurde */

require("http://my_domain_name/file.txt?varone=1&vartwo=2");

/* funktioniert nicht, da der Dateiname „file.php?varone=1&vartwo=2“ lautet.

zielt auf das lokale Dateisystem ab */

require("file.php?varone=1&vartwo=2");

/* wird ohne Fehler funktionieren */

require("http://my_domain_name/test.php?varone=1Svartwo=2");

require("file.txt");

require("file.php");

Diese Beispiele helfen Ihnen, die Verwendung des Operators require() klar zu verstehen und Fehler beim Erstellen von Programmen zu vermeiden. Als nächstes schauen wir uns die include()-Anweisung an, die der require()-Anweisung ähnelt, und wie sie funktioniert.

Wie Sie wissen, verfügt PHP über 4 Funktionen zum Einbinden anderer Dateien. Das enthalten, include_once, erfordern Und einmalig benötigt. Wie unterscheiden sie sich und wie verwendet man sie richtig?

Schauen wir uns zunächst den Unterschied zwischen an enthalten Und erfordern. Diese beiden Funktionen unterscheiden sich lediglich in ihrer Reaktion auf das Fehlen einer eingebundenen Datei. Funktion enthalten(„enable“) generiert, wenn die angegebene Datei fehlt, eine Fehlermeldung wie E_WARNING, die Programmausführung wird jedoch fortgesetzt. Im Gegensatz zu ihr, erfordern(„require“) erzeugt, wenn keine enthaltene Datei vorhanden ist, einen schwerwiegenden Fehler (E_ERROR), der zum sofortigen Stopp des laufenden Skripts führt.

Je nachdem, wie Ihr Code ausgeführt wird, können Sie den einen oder anderen Operator verwenden. Wenn es sich beispielsweise nur um ein Stück HTML handelt, das den Programmablauf im Allgemeinen nicht beeinträchtigt, oder wenn es sich um einige kleinere Plug-Ins handelt, ohne die der Rest des Programms normal funktionieren kann, können Sie diese gerne verwenden enthalten. In anderen Fällen empfehle ich die Verwendung erfordern. Dies verhindert die Möglichkeit einer fehlerhaften Codeausführung und im Falle eines Fehlers (z. B. wenn die enthaltene Datei durch einen Virus gelöscht wurde oder während des Entwicklungsprozesses verloren gegangen ist) wird das Skript einfach beendet. In einem der zukünftigen Artikel werde ich Ihnen zeigen, wie Sie absolut alle nicht standardmäßigen Situationen im Code verfolgen und wissen, was auf der Website passiert.

Schauen wir uns nun die Strukturen an include_once Und einmalig benötigt. Von einfach enthalten Und erfordern Sie zeichnen sich durch die Endung „_once“ aus, die verhindert, dass dieselben Dateien erneut eingebunden werden.

Wenn Ihre eingebundene Datei beispielsweise Beschreibungen von Klassen oder Funktionen enthält, kann eine solche Datei nicht erneut eingebunden werden, da sie erneut ausgeführt wird und PHP einen schwerwiegenden Fehler auslöst, wenn versucht wird, Klassen oder Funktionen mit bereits vorhandenen Namen zu definieren. Es besteht kein Zweifel daran, dass es möglich ist, den Code so zu gestalten, dass es nie zu einer erneuten Verbindung kommt, aber das bedeutet unnötige Einschränkungen und unnötige Arbeit. Daher sind Funktionen mit dem Suffix „_once“ sinnvoll und notwendig.

In meiner Praxis verwende ich zwei Arten von Dateien. Beim ersten Typ handelt es sich um Dateien, die eine oder mehrere Klassen enthalten und keinen Code enthalten, der „direkt“ ausgeführt wird. Ich verbinde solche Dateien immer mit einmalig benötigt. Der zweite Typ sind Vorlagen oder Vorlagenteile, die HTML und etwas PHP-Code enthalten. Ich verbinde solche Dateien mit erfordern, da manchmal dieselbe Vorlage mehrmals auf einer Seite verwendet werden kann.

Ich benutze es nie enthalten Und include_once, weil ich das Fehlen einer Akte als eine kritische Situation betrachte, die eine sofortige Lösung ohne Kompromisse erfordert. Und wenn ich eine Datei einbinden muss, deren Vorhandensein zweifelhaft ist, überprüfe ich einfach zunächst deren Vorhandensein mit is_file().

Bei der Verwendung von include gibt es noch einen weiteren Trick. Obwohl es sich hierbei nicht um eine Funktion, sondern um ein Sprachkonstrukt handelt, funktioniert der Operator in der enthaltenen Datei zurückkehren. Daher gibt include diesen Wert an den aufgerufenen Code zurück. Es sieht aus wie das

$ret = include 'file.php';

Das ist alles für heute, richtig programmieren!

Das Konstrukt von erforderlichen Einschlüssen

Design erfordern ermöglicht es Ihnen, Dateien in ein PHP-Skript einzubinden, um ein PHP-Skript auszuführen. Allgemeine Syntax erfordern solch:

Dateiname erforderlich;

Beim Starten (genau beim Start, nicht während der Ausführung!) des Programms ersetzt der Interpreter einfach die Anweisung durch den Inhalt der Datei Dateiname (diese Datei kann auch ein PHP-Skript enthalten, das wie üblich mit Tags umrahmt ist). Und ?> ). Darüber hinaus geschieht dies unmittelbar vor dem Start des Programms (im Gegensatz zu enthalten, was weiter unten besprochen wird). Dies kann sehr praktisch sein, um verschiedene Vorlagenseiten mit HTML-Code in die Skriptausgabe einzubinden. Hier ist ein Beispiel:

Header.html-Datei:

Es ist ein Titel

Footer.html-Datei:
Heimatunternehmen, 2005.

Script.php-Datei
erfordern „header.htm“;
// Das Skript zeigt den Hauptteil des Dokuments selbst an
erfordern „footer.htm“;
?>

Also das Design erfordern ermöglicht es Ihnen, PHP-Skripte aus mehreren separaten Dateien zusammenzustellen, die wie folgt aussehen können html-Seiten und php-Skripte.

Design erfordern unterstützt die Einbindung von Remote-Dateien (seit PHP 4.3.0). Zum Beispiel:

// Das folgende Beispiel funktioniert nicht, da versucht wird, eine lokale Datei einzuschließen
require "file.php?foo=1&bar=2" ;
// Das folgende Beispiel funktioniert
erfordern ;
?>

! Design erfordern ermöglicht Ihnen das Einbinden von Remote-Dateien, wenn diese Funktion in der PHP-Konfigurationsdatei aktiviert ist.

Einschließlich Remote-Dateien

Mit PHP können Sie mit URL-Objekten wie regulären Dateien arbeiten. Standardmäßig verfügbare Packer werden verwendet, um mit Remote-Dateien über das FTP- oder HTTP-Protokoll zu arbeiten.

Wenn „fopen-Wrapper-URLs“ in PHP eingebunden sind (wie in der Standardkonfiguration), können Sie eine einzubindende Datei über eine URL (über HTTP) anstelle eines lokalen Pfads angeben. Wenn der Zielserver die Zieldatei als PHP-Code interpretiert, können Variablen mithilfe einer URL-Abfragezeichenfolge wie bei HTTP GET an die Include-Datei übergeben werden. Streng genommen ist dies nicht dasselbe wie das Einschließen einer Datei und deren Übernahme des Gültigkeitsbereichs der Variablen der übergeordneten Datei. Schließlich läuft das Skript auf einem Remote-Server und das Ergebnis wird dann in das lokale Skript eingebunden.

Damit die Remote-Einbindung von Dateien verfügbar ist, müssen Sie dies in der Konfigurationsdatei (php.ini) festlegen. allow_url_fopen=1.

beachten Sie: PHP-Versionen für Windows vor PHP 4.3.0 unterstützen nicht die Möglichkeit, Remote-Dateien mit dieser Funktion zu verwenden, selbst wenn die Option „allow_url_fopen“ aktiviert ist.


/* Dies setzt voraus, dass www.example.com für parse.php konfiguriert ist
*-Dateien, keine TXT-Dateien. Auch „Funktioniert“ bedeutet hier, dass die Variablen
* $foo und $bar sind in der mitgelieferten Datei verfügbar. */

//Funktioniert nicht, da file.txt von www.example.com nicht wie PHP verarbeitet wird
erfordern „http://www.example.com/file.txt?foo=1&bar=2“;

// Funktioniert nicht, da im lokalen Verzeichnis nach der Datei „file.php?foo=1&bar=2“ gesucht wird
// Dateisystem.
require "file.php?foo=1&bar=2" ;

// Das folgende Beispiel funktioniert:
erfordern „http://www.example.com/file.php?foo=1&bar=2“;

$foo = 1 ;
$bar = 2;
erfordern „file.txt“ ; // Funktioniert
erfordern „file.php“ ; // Funktioniert

?>

Das Konstrukt von erforderlichen Einschlüssen

Design erfordern ermöglicht es Ihnen, Dateien in ein PHP-Skript einzubinden, das ein PHP-Skript ausführt. Allgemeine Syntax erfordern solch:

Dateiname erforderlich;

Beim Starten (genau beim Start, nicht während der Ausführung!) des Programms ersetzt der Interpreter einfach die Anweisung durch den Inhalt der Datei Dateiname (diese Datei kann auch ein PHP-Skript enthalten, das wie üblich mit Tags umrahmt ist). Und ?> ). Darüber hinaus wird er dies unmittelbar vor dem Start des Programms tun (im Gegensatz zu dem, was weiter unten besprochen wird). Dies kann sehr praktisch sein, um verschiedene Vorlagenseiten mit HTML-Code in die Skriptausgabe einzubinden. Hier ist ein Beispiel:

Header.html-Datei:

Es ist ein Titel

Footer.html-Datei:
Heimatunternehmen, 2005.

Script.php-Datei
erfordern „header.htm“;
// Das Skript zeigt den Hauptteil des Dokuments selbst an
erfordern „footer.htm“;
?>

Also das Design erfordern ermöglicht es Ihnen, PHP-Skripte aus mehreren separaten Dateien zusammenzustellen, die wie folgt aussehen können html-Seiten und php-Skripte.

Design erfordern unterstützt die Einbindung von Remote-Dateien (seit PHP 4.3.0). Zum Beispiel:

// Das folgende Beispiel funktioniert nicht, da versucht wird, eine lokale Datei einzuschließen
require "file.php?foo=1&bar=2" ;
// Das folgende Beispiel funktioniert
erfordern ;
?>

! Design erfordern ermöglicht Ihnen das Einbinden von Remote-Dateien, wenn diese Funktion in der PHP-Konfigurationsdatei aktiviert ist. Genaue Information .

Einschließlich Remote-Dateien

Mit PHP können Sie mit URL-Objekten wie regulären Dateien arbeiten. Standardmäßig verfügbare Packer werden verwendet, um mit Remote-Dateien über das FTP- oder HTTP-Protokoll zu arbeiten.

Wenn „fopen-Wrapper-URLs“ in PHP eingebunden sind (wie in der Standardkonfiguration), können Sie eine einzubindende Datei über eine URL (über HTTP) anstelle eines lokalen Pfads angeben. Wenn der Zielserver die Zieldatei als PHP-Code interpretiert, können Variablen mithilfe einer URL-Abfragezeichenfolge wie bei HTTP GET an die Include-Datei übergeben werden. Streng genommen ist dies nicht dasselbe wie das Einschließen einer Datei und deren Übernahme des Gültigkeitsbereichs der Variablen der übergeordneten Datei. Schließlich läuft das Skript auf einem Remote-Server und das Ergebnis wird dann in das lokale Skript eingebunden.

Damit die Remote-Einbindung von Dateien verfügbar ist, müssen Sie dies in der Konfigurationsdatei (php.ini) festlegen. allow_url_fopen=1.

beachten Sie: PHP-Versionen für Windows vor PHP 4.3.0 unterstützen nicht die Möglichkeit, Remote-Dateien mit dieser Funktion zu verwenden, selbst wenn die Option „allow_url_fopen“ aktiviert ist.


/* Dies setzt voraus, dass www.example.com für parse.php konfiguriert ist
*-Dateien, keine TXT-Dateien. Auch „Funktioniert“ bedeutet hier, dass die Variablen
* $foo und $bar sind in der mitgelieferten Datei verfügbar. */

//Funktioniert nicht, da file.txt von www.example.com nicht wie PHP verarbeitet wird
enthalten „http://www.example.com/file.txt?foo=1&bar=2“;

// Funktioniert nicht, da im lokalen Verzeichnis nach der Datei „file.php?foo=1&bar=2“ gesucht wird
// Dateisystem.
include „file.php?foo=1&bar=2“ ;

// Das folgende Beispiel funktioniert:
enthalten „http://www.example.com/file.php?foo=1&bar=2“;

$foo = 1 ;
$bar = 2;
include „file.txt“ ; // Funktioniert
include „file.php“ ; // Funktioniert

?>

Wird geladen...Wird geladen...