require_once est un mot-clé de PHP qui contient le fichier spécifié. Si le fichier a été inclus, require_once n'inclura plus le fichier. Par conséquent, il peut empêcher le chargement en double des fichiers dans une certaine mesure. Mais ce n'est pas absolument sûr, en particulier dans des projets complexes où il y a des cas de bord qui peuvent faire charger les fichiers à plusieurs reprises.
<span><span><span class="hljs-keyword">require_once</span></span><span> </span><span><span class="hljs-string">'config.php'</span></span><span>;
</span></span>Le code ci-dessus garantira que le fichier config.php ne sera chargé qu'une seule fois. Si le fichier a été chargé dans le même script, PHP sautera cette étape lors de l'exécution de require_once .
Defined () est une fonction qui vérifie si une constante a été définie. Une fois définies, les constantes ne peuvent pas être modifiées ou redéfinies. En tirant parti de défini (), nous pouvons éviter le chargement en double des fichiers, car une constante unique peut être définie dans le fichier comme un drapeau pour s'assurer que le fichier n'est chargé qu'une seule fois.
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'CONFIG_LOADED'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'CONFIG_LOADED'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-keyword">require_once</span></span><span> </span><span><span class="hljs-string">'config.php'</span></span><span>;
}
</span></span>Dans l'exemple de code ci-dessus, vérifiez d'abord si la constante config_loaded a été définie. S'il n'est pas défini, cela signifie que le fichier n'a pas été chargé, définissez donc la constante et effectuez le chargement du fichier. S'il est défini, le processus de chargement du fichier est ignoré pour éviter le chargement en double.
Afin de contrôler le chargement de fichiers plus précisément, nous pouvons utiliser Defined () en combinaison avec require_once pour augmenter la robustesse du programme.
<span><span><span class="hljs-comment">// exister config.php Dans le fichier</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'CONFIG_LOADED'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'CONFIG_LOADED'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// Code pour placer des fichiers de configuration ici</span></span><span>
}
</span><span><span class="hljs-comment">// exister其他 PHP Dans le fichier</span></span><span>
</span><span><span class="hljs-keyword">require_once</span></span><span> </span><span><span class="hljs-string">'config.php'</span></span><span>;
</span></span>Cette pratique garantit que même si config.php est introduit plusieurs fois , le contenu à l'intérieur du fichier ne sera exécuté qu'une seule fois, en évitant les effets secondaires du chargement répété.
Optimisation des performances : chaque fois qu'un fichier est chargé, il prendra les ressources du serveur. Si le fichier contient beaucoup de code ou de logique, le chargement fréquent du même fichier peut entraîner des pertes de performances inutiles.
Empêcher les erreurs : le chargement répété du même fichier peut provoquer des avertissements ou des erreurs de PHP. Par exemple, s'il y a des variables, des fonctions, des définitions de classe, etc. Dans le fichier, le chargement répété augmentera une erreur "définie".
Maintenabilité du code : grâce à un mécanisme de chargement de fichiers raisonnable, assurez-vous que le fichier n'est chargé qu'une seule fois, ce qui rend la structure du projet plus claire et plus facile à entretenir.
Dans des projets plus complexes, nous pouvons avoir plusieurs fichiers qui doivent être chargés conditionnellement, ou le même fichier est chargé plusieurs fois à différents endroits. Dans ce cas, se fier uniquement à require_once peut ne pas être suffisant pour résoudre le problème. Nous pouvons utiliser plus de mécanismes de chargement anti-duplication, tels que:
Chargement dynamique : chargez dynamiquement des fichiers en fonction des conditions spécifiques et des besoins de l'entreprise.
Frameworks : les frameworks PHP modernes (comme Laravel, Symfony) encapsulent généralement cette logique afin que les développeurs n'aient pas trop de choses à se soucier des détails de chargement des fichiers.
défini () et require_once sont des méthodes courantes en PHP pour empêcher le chargement en double des fichiers. En utilisant les deux raisonnablement, nous pouvons éviter efficacement la consommation de performances inutile et les erreurs potentielles. De plus, dans des projets plus complexes, le mécanisme de chargement fourni par le cadre de dépendance peut également nous aider à gérer le processus de chargement des fichiers plus efficacement.