Heim  >  Artikel  >  Backend-Entwicklung  >  „require,include,require_once' und „include_once' werden angezeigt

„require,include,require_once' und „include_once' werden angezeigt

WBOY
WBOYOriginal
2016-08-08 09:21:53954Durchsuche

1.require()-Anweisung
Die require()-Anweisung wird verwendet, um die Datei anstelle der Anweisung selbst anzugeben, genau wie die include()-Anweisung in der C-Sprache. Wenn der URL-Fopen-Wrapper in der PHP-Konfigurationsdatei php.ini aktiviert ist (dies ist standardmäßig aktiviert), können Sie die URL verwenden, um den Speicherort der Datei anzugeben, um einen Remote-Dateiaufruf zu erreichen.
Eine Sache ist, bei der Verwendung der Anweisungen require() und include() besonders darauf zu achten. Das heißt, in der eingebundenen Datei interpretiert der Prozessor den Inhalt gemäß dem HTML-Modus und kehrt nach der Verarbeitung des eingebundenen Inhalts in den PHP-Modus zurück. Wenn Sie also in der eingebundenen Datei PHP-Syntax verwenden müssen, müssen Sie die richtigen PHP-Start- und End-Tags verwenden, um diese Anweisungen einzuschließen.
require() und include() sind eine Sprachfunktion in PHP, keine Funktion. Sie unterscheiden sich in vielerlei Hinsicht von Funktionen.
Zum Beispiel: Die in require() enthaltene Datei darf keine Kontrollstrukturen enthalten und Anweisungen wie return können nicht verwendet werden. Die Verwendung der return-Anweisung in einer in require() enthaltenen Datei führt zu einem Verarbeitungsfehler.
Im Gegensatz zur include()-Anweisung liest die require()-Anweisung bedingungslos den Inhalt der darin enthaltenen Datei, unabhängig davon, ob diese Anweisungen ausgeführt werden. Wenn Sie also unterschiedliche Dateien entsprechend unterschiedlichen Bedingungen einbinden möchten, müssen Sie die Anweisung include() verwenden. Wenn die Anweisung an der Stelle von require() nicht ausgeführt wird, werden natürlich auch die Anweisungen in der in require() enthaltenen Datei nicht ausgeführt.
require() kann nicht unterschiedliche Dateien entsprechend unterschiedlichen Bedingungen in den Schleifenkörper einschließen. Die require()-Anweisung ruft nur den Inhalt der darin enthaltenen Datei auf, wenn sie zum ersten Mal ausgeführt wird, um die Anweisung selbst zu ersetzen. Bei einer erneuten Ausführung wird nur die beim ersten Mal enthaltene Anweisung ausgeführt. Die include()-Anweisung kann jedoch verschiedene Dateien in den Schleifenkörper einschließen.
Die Variablen in der require()-Anweisung erben den Variablenbereich am Speicherort der require()-Anweisung. Auf alle Variablen, auf die am Speicherort der require()-Anweisung zugegriffen werden kann, kann auch in der Datei zugegriffen werden, die in der require()-Anweisung enthalten ist. Wenn sich die require()-Anweisung innerhalb einer Funktion befindet, sind die Anweisungen in der eingebundenen Datei gleichbedeutend mit der Definition innerhalb der Funktion. Die Anweisung
require() liest die von require referenzierte Datei, bevor das PHP-Programm ausgeführt wird. Daher wird require normalerweise am Anfang des Programms platziert. Daher sollte besonders darauf geachtet werden, dass die Anforderungsanweisung etwas streng ist. Unabhängig davon, ob das Programm die referenzierten Dateien wirklich benötigt, werden sie einbezogen, solange Sie die Anforderungsanweisung verwenden! Selbst wenn Sie diese Funktion zum Einschließen in eine bedingte Steueranweisung verwenden, wird die referenzierte Datei eingebunden, auch wenn die Bedingung nicht wahr ist! Es entstehen Zombies, die während des Betriebs keine sichtbaren Auswirkungen haben, aber die Belastung erhöhen, also achten Sie besonders darauf! Tritt bei der Verwendung der require-Anweisung ein Inklusionsfehler auf, gibt das Programm eine Fehlermeldung aus und stoppt die Ausführung! !
Wenn die require()-Anweisung eine Remote-Datei durch Angabe der URL der Datei einschließt und der Remote-Server die Datei gemäß dem PHP-Code interpretiert, ist der in der lokalen PHP-Datei enthaltene Inhalt das Ergebnis der Verarbeitung auf dem Remote-Server Server. Zum Beispiel:

Kopieren Sie den Code Der Code lautet wie folgt:


/*
Dieses Beispiel geht davon aus dass der some_server-Server PHP-Dateien interpretieren kann, ohne .txt-Dateien zu interpretieren. In der Remote-Datei
benötigen die Variablen $varfirst und $varsecond
*/
/*kann nicht korrekt ausgeführt werden, der Remote-Server verarbeitet keine TXT-Dateien*/
require("http:// some_server/file .txt?varfirst=1&varsec>
/*Falsch, daher können Sie die Datei file.php nur auf dem lokalen Computer finden*/
require("file.php?varfirst=1&varsec>
/*Richtige Aussage */
require("http://some_server/file.php?varfirst=1&varsec>
$varfirst=1;
$varsec>require("file.txt"); / *Richtige Anweisung */
require("file.php"); /*Richtige Anweisung*/


Ursprünglich in PHP3.0 können in require() enthaltene Dateien return verwenden Anweisung, aber die Bedingung ist, dass die Return-Anweisung nicht in {} erscheinen darf, sondern im globalen Bereich der eingebundenen Datei erscheinen muss. Diese Funktion von require() wurde in php4.0 abgebrochen, kann aber weiterhin mit include implementiert werden ().
2.include()-Anweisung
include()-Anweisung hat viele Ähnlichkeiten mit der require()-Anweisung, die in der obigen Anforderung nicht angegeben sind ()-Anweisung. Mit Ausnahme der Teile, die nicht auf include() angewendet werden können, sind die Funktionen der require()-Anweisung vollständig auf die include()-Anweisung anwendbar. Im Folgenden werden die Funktionen und Merkmale der include()-Anweisung beschrieben require()-Anweisung nicht.
Die Include-Anweisung liest die einzuschließende Datei nur ein, wenn sie ausgeführt wird. Verwenden Sie zur Vereinfachung der Fehlerbehandlung die Include-Anweisung. Das Programm überspringt die Include-Anweisung, das Programm führt sie jedoch jedes Mal erneut aus, wenn es auf eine Include()-Anweisung stößt Sie können include() in bedingten Steueranweisungen und Schleifenanweisungen je nach Situation verwenden
Zum Beispiel:

Kopieren der Code

Der Code lautet wie folgt:


$files=array('first.php','second.php','third.php'); count($files);$i++)
{
include $files[$i];
}
?> Die return-Anweisung kann in Dateien verwendet werden, die in der include()-Anweisung in PHP4.0 enthalten sind, um einen Wert zurückzugeben und die Ausführung des Inhalts unter der eingebundenen Datei zu stoppen. Aber php3.0 und php4.0 gehen mit solchen Situationen unterschiedlich um. In php3.0 darf die Return-Anweisung nicht in {} enthalten sein, es sei denn, sie befindet sich in einer Funktion, da sie dann den Rückgabewert der Funktion und nicht den Rückgabewert der Datei darstellt. In php4.0 gibt es keine solche Einschränkung. Benutzer können sogar eine Zahl in der Datei zurückgeben, genau wie den Rückgabewert einer Funktion. Solche Anweisungen melden normalerweise Fehler in

php3.0. Das Folgende ist ein Beispiel:
Angenommen, die enthaltene Datei ist test.inc und die Hauptdatei main.php befindet sich in einem Verzeichnis. Der Inhalt von test.inc lautet wie folgt:
test.inc

Kopieren Sie den Code
Der Code lautet wie folgt folgt:

echo „Vor der Rückkehr
n“
if(1)

{

return 27;
echo „Nach der Rückgabe
?> 🎜>

Code kopieren

Der Code lautet wie folgt:


$retval=include('test.inc');
echo „Datei zurückgegeben:' $retval'?>


Der PHP3.0-Interpreter meldet einen Fehler in der zweiten Zeile und kann die Rückgabe des include()-Anweisungswerts nicht erhalten. Aber in php4.0 erhalten Sie das folgende Ergebnis: Vor der Rückkehr


Datei zurückgegeben: '27'


Annahme unten wird main.php geändert in:


Kopieren Sie den Code
Der Code lautet wie folgt:
include( 'test.inc');
echo "Back in main.html
n";

Die Ausgabe in php4.0 ist: Vor der Rückkehr

Zurück in main.html


Das Ausgabeergebnis in php5.0 ist auch:

Vor der Rückkehr
Zurück in main.html
Das Ausgabeergebnis in PHP3.0 ist:
Vor der Rückkehr
27Zurück in main.html
Analysefehler:Analysefehler in /apache/htdocs/phptest/main.html in Zeile 5
Der obige Fehler tritt auf, weil sich die Return-Anweisung innerhalb von {} und nicht innerhalb einer Funktion befindet. Wenn {} entfernt wird, sodass es sich in der äußersten Ebene von test.inc befindet, lautet das Ausgabeergebnis:
Vor der Rückkehr
27Zurück in main.html
Der Grund, warum 27 angezeigt wird, ist, dass die Rückgabe von include() in PHP3.0 nicht unterstützt wird.
3.require_once()- und include_once()-Anweisungen
require_once()- und include_once()-Anweisungen entsprechen den require()- bzw. include()-Anweisungen. Die Anweisungen require_once() und include_once() werden hauptsächlich verwendet, wenn mehrere Dateien eingebunden werden müssen, wodurch Fehler bei wiederholten Definitionen von Funktionen oder Variablen, die durch das Einbinden desselben Codeteils verursacht werden, effektiv vermieden werden können. Beispiel: Wenn Sie zwei Dateien util.inc und Fool.inc erstellen, lauten die Programmcodes:
util.inc:

Kopieren Code
Der Code lautet wie folgt:
define(PHPVERSION,floor(phpversion())); br>n" ;
function goodTea()
{ return „Olong-Tee schmeckt gut!"; }
?>

und Fool.inc:



Code kopieren

Der Code lautet wie folgt:


require ("util.inc" );
function showVar($var)

{
if(PHPVERSION==4) { print_r($var)}
else

{ var_dump($var);} }

Dann fügen Sie diese beiden Dateien in error_require ein. php:




Code kopieren

Der Code lautet wie folgt:


require(" Fool.inc");
require("util.inc");//Dieser Satz erzeugt einen Fehler
$foo=array("1",array("complex","quaternion"));
echo „dies erfordert erneut util .inc, was auch
n“ ist;
echo „erforderlich in „fool.incn““; br>n";

echo „Printing foo:
n";
showVar($foo); ?>

Wenn error_require.php ausgeführt wird, sieht die Ausgabe wie folgt aus:
GLOBALS ARE NICE
GLOBALS ARE NICE
Schwerwiegender Fehler: goodTea() kann in util.inc in Zeile 4 nicht erneut deklariert werden
Wenn Sie die Anweisung require_once() anstelle der Anweisung require() verwenden, tritt der obige Fehler nicht auf. Wir haben die „require()“-Anweisung in „error_require.php“ und „fool.inc“ in „require_once()“-Anweisung geändert und in „error_require_once.php“ umbenannt. Das Ergebnis ist wie folgt:
GLOBALS ARE NICE
Dies erfordert wiederum util.inc, was auch
in Fool.inc erforderlich ist. Running goodTea:Olong-Tee schmeckt gut
Foo drucken: 🎜 >
Array([0] => 1 [1] => Array ([0] => complex [1] = Quaternion))
include_once( The Die Syntax der )-Anweisung ähnelt der der include()-Anweisung. Der Hauptunterschied besteht darin, wiederholte Definitionen von Funktionen oder Variablen zu vermeiden, die durch das mehrmalige Einschließen einer Datei verursacht werden.
Die require_once-Anweisung verfügt über eine Referenzkette, die sicherstellt, dass die Datei nur einmal zu Ihrem Programm hinzugefügt wird und Konflikte zwischen Variablenwerten und Funktionsnamen vermeidet.
Wie die require_once-Anweisung erweitert die include_once-Anweisung die Funktionalität von include. Während der Programmausführung wird die angegebene Datei eingebunden, wenn das von der Datei referenzierte Programm bereits zuvor eingebunden wurde, wird include_once() es nicht erneut einbinden. Das heißt, die gleiche Datei kann nur einmal referenziert werden! Die Anweisung
include_once() schließt die angegebene Datei ein und führt sie während der Skriptausführung aus. Dieses Verhalten ähnelt der include()-Anweisung. Der einzige Unterschied besteht darin, dass der Code, wenn er bereits in der Datei enthalten ist, nicht noch einmal eingefügt wird. Wie der Name dieser Aussage schon sagt, wird sie nur einmal enthalten sein.
include_once() sollte verwendet werden, wenn dieselbe Datei während der Skriptausführung möglicherweise mehr als einmal eingebunden wird und Sie sicherstellen möchten, dass sie nur einmal eingebunden wird, um Probleme wie Funktionsneudefinition und Variablenneuzuweisung zu vermeiden . .
Weitere Beispiele für die Verwendung von require_once() und include_once() finden Sie im PEAR-Code im neuesten PHP-Quellverteilungspaket.
Der Rückgabewert ist der gleiche wie bei include(). Wenn die Datei enthalten ist, gibt diese Funktion TRUE zurück.
Hinweis: include_once() wurde in PHP 4.0.1pl2 neu hinzugefügt.
Hinweis: Beachten Sie, dass das Verhalten von include_once() und require_once() in Betriebssystemen, bei denen die Groß-/Kleinschreibung nicht beachtet wird (z. B. Windows)
möglicherweise nicht zu erwarten ist.
Beispiel: include_once() unterscheidet unter Windows nicht zwischen Groß- und Kleinschreibung

Kopieren Sie den CodeDer Code lautet wie folgt:

include_once("a.php"); // dies wird a.php enthalten
include_once("A.php"); a.php wieder unter Windows! (nur PHP 4)


Dieses Verhalten wurde in PHP 5 geändert, der Pfad wird zuerst normalisiert, also C:PROGRA~1A .php Wie bei der C:Program Filesa.php-Implementierung wird die Datei nur einmal eingebunden.
Wenn die einzuschließende Datei nicht vorhanden ist, fordert include den Hinweis auf und führt dann die folgende Anweisung weiter aus. require löst einen schwerwiegenden Fehler aus und wird beendet.
Unter der Win32-Plattform werden sie zuerst eingebunden und dann ausgeführt. Daher ist es am besten, keine include- oder require-Anweisungen in den eingebundenen Dateien zu haben, da dies zu Verzeichnisverwirrungen führen würde. Vielleicht ist die Situation unter Linux anders, ich habe es noch nicht getestet.
Wenn eine Datei nicht mehrfach eingebunden werden soll, können Sie include_once oder require_once## verwenden, um Dokumentdaten zu lesen und zu schreiben.

Code kopierenDer Code lautet wie folgt:

function r($file_name ) {
$filenum=@fopen($file_name,"r");
@flock($filenum,LOCK_SH));
@fclose($filenum);
return $file_data;
}
function w($file_name,$data,$method="w"){
$filenum=@fopen( $file_name, $method);
flock($filenum,$data);
return $file_data; 🎜>}

Das Obige hat die Unterschiede zwischen require, include, require_once und include_once vorgestellt, einschließlich der relevanten Aspekte. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn