Gibt es einen Unterschied zwischen ihnen? Ist ihre Verwendung eine Frage der Präferenz? Ergibt die Verwendung übereinander Vorteile? Was ist besser für die Sicherheit?
Gibt es einen Unterschied zwischen ihnen? Ist ihre Verwendung eine Frage der Präferenz? Ergibt die Verwendung übereinander Vorteile? Was ist besser für die Sicherheit?
Antworten:
Die Unterschiede finden Sie im ausführlichen PHP-Handbuch auf der Seite vonrequire
:
require
ist identisch mit,include
außer dass bei einemE_COMPILE_ERROR
Fehler auch ein schwerwiegender Pegelfehler auftritt. Mit anderen Worten, das Skript wird angehalten, während include nur eine Warnung (E_WARNING
) ausgibt, mit der das Skript fortgesetzt werden kann.
Siehe @ Antwort des efritz für ein Beispiel
<?php if (isset($flibbertygibbet)) require 'file.php';
scheint diese Antwort völlig falsch aussehen zu lassen. Andernfalls sollte ein schwerwiegender Fehler angezeigt werden, obwohl die Bedingung nicht erfüllt ist. strace
zeigt nicht einmal PHP, das versucht zu berühren file.php
.
if (false) require 'file.php';
dass 'file.php' geladen (aber nicht ausgeführt) würde. TLDR ignoriert alle diese Kommentare.
require
wird einen schwerwiegenden PHP-Fehler auslösen, wenn die Datei nicht geladen werden kann. (Ausführung stoppt)
include
erzeugt eine Warnung, wenn die Datei nicht geladen werden kann. (Ausführung wird fortgesetzt)
Hier ist eine schöne Illustration von Include und erfordern Unterschied :
Von: Differenz erforderlich vs. Include PHP (von Robert; Nov 2012)
Verwenden include
Sie diese Option, wenn Sie nichts dagegen haben, dass Ihr Skript fortgesetzt wird, ohne die Datei zu laden (falls sie nicht vorhanden ist usw.) und Sie (obwohl Sie dies nicht sollten) mit einer angezeigten Warnfehlermeldung leben können.
Verwenden require
bedeutet, dass Ihr Skript angehalten wird, wenn es die angegebene Datei nicht laden kann, und einen schwerwiegenden Fehler auslöst.
Wie andere betonten, besteht der einzige Unterschied darin, dass erforderlich einen schwerwiegenden Fehler auslöst und Folgendes enthält: eine auffangbare Warnung. Was die Verwendung betrifft, ist mein Rat, sich an die Einbeziehung zu halten. Warum? weil Sie eine Warnung abfangen und den Endbenutzern ein aussagekräftiges Feedback geben können. Erwägen
// Example 1.
// users see a standard php error message or a blank screen
// depending on your display_errors setting
require 'not_there';
// Example 2.
// users see a meaningful error message
try {
include 'not_there';
} catch(Exception $e) {
echo "something strange happened!";
}
Hinweis: Um beispielsweise 2 zu funktionieren, müssen Sie einen Fehler-zu-Ausnahmen-Handler installieren, wie hier beschrieben. Http://www.php.net/manual/en/class.errorexception.php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
<?PHP
echo "Firstline";
include('classes/connection.php');
echo "I will run if include but not on Require";
?>
Ein sehr einfaches praktisches Beispiel mit Code. Das erste Echo wird angezeigt. Unabhängig davon, ob Sie include oder require verwenden, da die Läufe vor include oder erforderlich sind.
Um das Ergebnis zu überprüfen, geben Sie in der zweiten Zeile eines Codes absichtlich den falschen Pfad zur Datei an oder machen Sie einen Fehler im Dateinamen. Somit hängt das zweite Echo, das angezeigt werden soll oder nicht, vollständig davon ab, ob Sie require oder include verwenden .
Wenn Sie require verwenden, wird das zweite Echo nicht ausgeführt. Wenn Sie jedoch include verwenden , unabhängig davon, welcher Fehler auftritt, wird auch das Ergebnis des zweiten Echos angezeigt.
Im Falle, dass Include Program nicht beendet wird und eine Warnung im Browser angezeigt wird, wird das Require-Programm beendet und zeigt einen schwerwiegenden Fehler an, wenn die Datei nicht gefunden wird.