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. p>
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'). P>
5 Réponses :
Utilisez Exiger_once à la place: P>
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 ... P> blockQuote>
La meilleure solution est requise_once (), qui utilise la même syntaxe que nécessaire () mais effectue la vérification dont vous parlez automatiquement. P>
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. p>
En supposant qu'il existe une fonction définie dans le fichier que vous souhaitez inclure, vous pouvez également faire une utilisation rapide utiliser ce qui convient le mieux à votre configuration. p> p >
J'ai utilisé l'approche de Wisdompanda sur une classe, mon exemple utilise JSmin si (! Method_exists ('JSmin', 'Minify')) {Exiger_once ('libs / jsmin.php'); } code>
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; } ?>
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é.
get_inclused_files code> ( void em>)
http://www.php.net/manual/fr/function.get-inclused-files.php p>
Obtient les noms de tous les fichiers inclus Utilisation de Inclure , Inclus_once , nécessite ou Exiger_once a> p> retourne un tableau des noms de tous les fichiers. P>
Le script appelé initialement appelé est considéré comme un "fichier inclus", il sera donc répertorié
avec les fichiers référencés par Inclure et la famille. P>
Les fichiers inclus ou requis plusieurs fois n'apparaissent que une fois dans la matrice renvoyée. P>
blockQuote> L'exemple ci-dessus sortira: p> valeurs de retour h2>
get_included_files () code> Exemple h2>
abc.php
test1.php
test2.php
test3.php
test4.php
Cela devrait être considéré comme la réponse à la question. Si cela inclut une fonction personnalisée pour implémenter un seul rappel le rendrait plus simple. Par exemple, la fonction check_include ($ fichier) {$ include_files = get_inclored_files (); retour in_array ($ fichier, $ include_files); }
Avez-vous un contrôle sur les déclarations requises? Si tel est le cas, vous pouvez utiliser Exigence_once () à la place.