it-swarm.com.de

Unterschied zwischen "Include" und "Requirement" in PHP

Gibt es einen Unterschied zwischen ihnen? Ist es eine Frage der Präferenz? Hat die Verwendung einer Kombination Vorteile? Was ist besser für die Sicherheit?

169
Dan Hanly

Die Unterschiede finden Sie im ausführlichen Handbuch PHP auf der Seite von require :

require ist identisch mit include , es wird jedoch bei einem Fehler auch ein schwerwiegender Fehler auf E_COMPILE_ERROR -Ebene erzeugt. Das heißt, das Skript wird angehalten, wohingegen include nur eine Warnung (E_WARNING) ausgibt, die es dem Skript ermöglicht, fortzufahren.

Siehe @ efritz 'Antwort für ein Beispiel

143
Steven

require gibt einen schwerwiegenden Fehler PHP aus, 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 Darstellung von Include und Differenz erfordern :

enter image description here

From:Differenz erforderlich vs. include php (von Robert; Nov 2012)

178
efritz

Verwenden Sie include, wenn Sie nichts dagegen haben, dass Ihr Skript ohne Laden der Datei weiterläuft (falls diese nicht vorhanden ist usw.) und Sie (obwohl Sie dies nicht sollten) eine Warnung-Fehlermeldung erhalten können.

Wenn Sie require verwenden, wird Ihr Skript angehalten, wenn die angegebene Datei nicht geladen werden kann, und es wird ein schwerwiegender Fehler ausgegeben.

4
Martin Bean

Wie andere darauf hingewiesen haben, besteht der einzige Unterschied darin, dass ein schwerwiegender Fehler ausgegeben und eine abrufbare Warnung eingefügt werden muss. Für den, den ich verwenden möchte, ist mein Rat zu beachten. Warum? weil Sie eine Warnung abfangen können und ein aussagekräftiges Feedback an die Endbenutzer abgeben 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!";
  }

ANMERKUNG: Für die Arbeit zum Beispiel 2 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");   
1
user187291
<?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. Egal, ob Sie Include verwenden oder benötigen, weil es vor dem Include läuft oder erforderlich ist.

Um das Ergebnis zu überprüfen, geben Sie in der zweiten Codezeile absichtlich den falschen Pfad zur Datei an oder machen Sie einen Fehler im Dateinamen. Somit ist das zweite Echo, das angezeigt werden soll oder nicht, völlig davon abhängig, ob Sie required oder include verwenden.

Wenn Sie required verwenden, wird das zweite Echo nicht ausgeführt, aber wenn Sie include verwenden, ist es egal, welcher Fehler auftritt. Sie werden auch das Ergebnis des zweiten Echos sehen. 

0