Différence entre “comprendre” et de “besoin” en php
Est là toute la différence entre eux? Est en les utilisant d'une question de préférence? Le fait d'utiliser l'un ou l'autre de produire les avantages? Ce qui est mieux pour la sécurité?
- double possible de Quand dois-je utiliser require_once vs inclure?
- Utilisez toujours "besoin". "inclure" est aussi pratique que d'un porte électrique dans un sauna.
- Comment serait-ce gênant? C'est sans doute clair, je ne suis pas le voir. Peut-être que la vapeur?
- Pour faire simple, si un "foo.php' fichier est manquant erreur, je veux savoir dès que possible, pas quand une fonction qui devraient avoir été dans foo.php est appelé. Remplacement comprennent exigent révèlent souvent des bugs. Disons config.php est manquant, et l'application est en cours d'exécution avec une configuration par défaut. Ce qui est mieux pour la sécurité? Comme pour le sauna, quand je suis à l'intérieur et la porte ne s'ouvre pas pour une raison que je ne l'aime pas.
Vous devez vous connecter pour publier un commentaire.
Vous trouver les différences expliquées dans le manuel PHP sur la page
require
:Voir @efritz réponse pour un exemple
<?php if (isset($flibbertygibbet)) require 'file.php';
semble faire de cette réponse look totalement erronée. Sinon, je devrais obtenir une erreur fatale, même si la condition n'est pas vrai.strace
ne montre pas de PHP, même en essayant de toucherfile.php
.if (false) require 'file.php';
serait en cause "file.php" pour être chargés (mais pas exécuté). TLDR abstraction de tous ces commentaires.require
lèvera une Erreur Fatale de PHP si le fichier ne peut pas être chargé. (Exécution des arrêts)include
produit un message d'Avertissement si le fichier ne peut pas être chargé. (Exécution continue)Voici une belle illustration d'inclure et d'exiger la différence:
Utilisation
include
si vous n'avez pas l'esprit de votre script continue sans charger le fichier (dans le cas où il n'existe pas etc) et vous pouvez (bien que vous ne devriez pas) vivre avec un message d'Avertissement message d'erreur affiché.À l'aide de
require
signifie que votre script s'arrête si il ne peut pas charger le fichier spécifié, et de jeter une erreur Fatale.Comme d'autres l'ont souligné, la seule différence est que nécessitent renvoyait une erreur fatale, et comprendre un catchable avertissement. Comme pour celui à utiliser, mon conseil est de s'en tenir à inclure. Pourquoi? parce que vous pouvez attraper un avertissement et d'obtenir une bonne rétroaction des utilisateurs finaux. Envisager
NB: pour l'exemple 2, à travailler, vous devez installer une des erreurs-à-gestionnaire d'exceptions, comme décrit ici http://www.php.net/manual/en/class.errorexception.php
Un très simple exemple Pratique avec code.
La première echo sera affiché. Peu importe si vous l'utiliser include ou require parce que sa fonctionne avant de l'inclure ou l'exige.
Pour vérifier le résultat, Dans la deuxième ligne du code fournissent volontairement le mauvais chemin vers le fichier ou l'erreur dans le nom de fichier. Ainsi, la deuxième écho pour être affichés ou non sera totalement dépendante de savoir si vous utilisez besoin ou inclure.
Si vous utilisez besoin la deuxième écho ne s'exécute pas, mais si vous utilisez inclure a pas d'importance ce que l'erreur vient vous verrez le résultat de la deuxième écho trop.
En cas de inclut le Programme ne s'arrête pas d'alerte et d'affichage sur le navigateur,d'autre part Exiger programme s'arrête et l'affichage de l'erreur fatale en cas de fichier non trouvé.