6
votes

Comment savoir si un fichier a déjà été requis?

J'ai créé un fichier global PHP (globs.php) et l'avez requis dans toutes mes pages. Cependant, certaines pages comprennent désormais d'autres pages et je reçois une erreur lorsqu'il essaie de demander à nouveau globe.php.

Comment puis-je dire si un fichier a été requis? De cette façon, je pourrais faire si! Obligatoire ('globs.php') nécessite ('globs.php').


1 commentaires

Avez-vous un contrôle sur les déclarations requises? Si tel est le cas, vous pouvez utiliser Exigence_once () à la place.


5 Réponses :


32
votes

Utilisez Exiger_once à la place:

L'instruction _RQUIRE_ONCE_ est identique à Exiger sauf PHP vérifiera si le fichier a déjà été inclus, et, dans l'affirmative, n'incluez pas (exiger) le refuge ...


0 commentaires

4
votes

La meilleure solution est requise_once (), qui utilise la même syntaxe que nécessaire () mais effectue la vérification dont vous parlez automatiquement.

Si vous avez vraiment besoin de savoir si cela a déjà été nécessaire, je suggère de définir une constante dans votre fichier inclus et de vérifier sa valeur.


0 commentaires

3
votes

En supposant qu'il existe une fonction définie dans le fichier que vous souhaitez inclure, vous pouvez également faire une utilisation rapide xxx

utiliser ce qui convient le mieux à votre configuration.


1 commentaires

J'ai utilisé l'approche de Wisdompanda sur une classe, mon exemple utilise JSmin si (! Method_exists ('JSmin', 'Minify')) {Exiger_once ('libs / jsmin.php'); }



-2
votes

Vous pouvez également faire votre propre fonction requis_file:

<?php
function require_file($file_path){
    static $required_files=array();
    if(!isset($required_files[$file_path])){
        require $file_path;
        $required_files[$file_path]=true;
        return true;
    }
    return false;
}
?>


2 commentaires

Cette fonction est déjà implémentée dans PHP pour vous: PHP.net/ Manual / fr / Function.get-Inclus-Inclus-Files.php Voir ma réponse.


Cela ne fonctionne que si vous l'utilisez pour inclure littéralement tout. Dès que vous ajoutez dans le compositeur ou le PSR-4 ou quoi que ce soit d'autre qui gère l'inclusion du fichier au mélange, cela devient immédiatement totalement peu fiable. Il suffit d'utiliser l'intégré.