Maison  >  Article  >  développement back-end  >  Quelle est la différence entre la fonction include() et la fonction require() en php ?

Quelle est la différence entre la fonction include() et la fonction require() en php ?

不言
不言original
2018-08-07 10:55:453165parcourir

Ce que cet article vous apporte concerne la différence entre la fonction include() et la fonction require() en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. .

Il y a trop de questions en ligne sur la différence entre include et require en php. En fait, rien de ce qui est dit ne résiste à la vérification. J'ai trouvé une capture d'écran au hasard comme suit :


Je ne jure que par l'explication : include() est une fonction d'inclusion conditionnelle, tandis que require() est une fonction incluse de manière inconditionnelle.

Mais cela s'est produit il y a longtemps. Il existe effectivement des différences entre require et include dans PHP actuel. L'auteur a testé la version 5.3 ou supérieure. Les résultats du test sont les suivants :

J'ai trouvé que. ces deux structures sont sauf que les performances sont exactement les mêmes, sauf la façon dont les échecs de confinement sont gérés.

1. En termes de performances

Le test a révélé qu'il n'y a pas beaucoup de différence de performances entre require et include, donc je pense que cet aspect n'a pas besoin d'être pris en compte (peut-être que je ne l'ai pas fait testé suffisamment d'échantillons)

<pre name="code" class="php">$startTime=time();
$startMemoryUsed=memory_get_usage();  
require "a1.inc";
$endMemoryUsed=memory_get_usage();
$endTime=time();
$usedMemory=($endMemoryUsed-$startMemoryUsed)/1024; 
print_r($usedMemory);//1.6171875
echo &#39;</br>&#39;;
print_r($endTime-$startTime);
/*$startTime=time();
$startMemoryUsed=memory_get_usage();  
include "a1.inc";
$endMemoryUsed=memory_get_usage();  
$endTime=time();
$usedMemory=($endMemoryUsed-$startMemoryUsed)/1024; 
print_r($usedMemory);//1.6171875
print_r($endTime-$startTime);*/

2. En termes de gestion des erreurs d'inclusion

Lorsque l'inclusion échoue, include() génère un avertissement et continue l'exécution, tandis que require() provoque une erreur fatale. En d’autres termes, utilisez require() si vous souhaitez arrêter le traitement de la page lorsqu’un fichier manquant est rencontré, sinon utilisez include().

include "a9.inc";//<span style="font-family: Arial, Helvetica, sans-serif;">a9.inc不存在会产生一个警告</span>
require "a10.inc";//a10.inc不存在会产生一个致命错误

Ajouté : inclure, nécessiter la portée d'inclusion

Fichier a2.inc

$name="lidquan";
class Teacher{
    public function show(){
        echo &#39;my job is teacher</br>&#39;;
    }
}
function showName(){
    echo &#39;a2.inc 里面的方法&#39;;
}

Fichier index.php

function a(){
    require "a2.inc";
    $teacher =new Teacher();
    $teacher->show();
}
 
a();//正常调用
 
showName();//正常调用
 
var_dump($name);//提示$name没有定义

La capture d'écran du résultat est la suivante :

Un résumé des problèmes de portée après avoir inclus le fichier est la suivante :

1. Toutes les fonctions et classes définies dans le fichier inclus auront une portée globale dans le fichier inclus après avoir été incluses

2. Le fichier inclus sera modifié avec le changement de position contenant. Par exemple, s'il est inclus dans une fonction, les variables du fichier inclus sont des variables locales

Articles connexes recommandés :

Comment PHP utilise-t-il la méthode curl pour demander un Java interface? Deux façons pour PHP de demander l'interface Java en utilisant la méthode curl

Comment stocker la session dans la base de données et l'utiliser en PHP (avec code)

Implémentation de ThinkPHP Code pour l'assemblage de chaînes de pagination dans le framework

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn