Manuel PHP
Précédent
Chapitre 12.
Les structures de contrôle
Suivant
La commande require_once() se remplace elle-même par le fichier spécifié, un peu comme les commandes de préprocesseur C #include, et ressemble sur ce point à require().
La principale différence est qu'avec require_once(), vous êtes assurés que ce code ne sera ajouté qu'une seule fois, évitant de ce fait les redéfinitions de variables ou de fonctions, génératrices d 'alertes.
Par exemple, si vous créez les deux fichiers d 'inclusion utils.inc et foolib.inc
Exemple 12-2. utils.inc
?php define( PHPVERSION, floor(phpversion())); echo "LES GLOBALES SONT SYMPAS\n"; function goodTea() {return "Le Earl Grey est d eacute;licieux !";}?
Exemple 12-3. foolib.inc
?php require ("utils.inc"); function showVar($var) {if (PHPVERSION == 4) {print_r($var);} else {dump_var($var);}} / / Une s eacute ;rie de fonctions?
Exemple 12-4. cause_error_require.php
?php require( "foolib.inc"); / * Ceci g eacute;n egrave;re une erreur* / require("utils.inc"); $foo = array("1",array("complex" ,"quaternion")); echo "Ce code requiert utils.inc une deuxi egrave;me fois, car il est requis \n"; echo "dans foolib.inc\n"; echo "Utilisation de GoodTea: ".goodTea() ."\n"; echo "Affichage de foo: \n"; showvar($foo);?
GLOBALS ARE NICE GLOBALS ARE NICE Fatal error:
Cannot redeclare causeerror() in utils.inc on line 5
Exemple 12-5. foolib.inc (corrigé)
?php require_once( "utils.inc"); function showVar($var) {?
Exemple 12-6. avoid_error_require_once.php
?php require_once( "foolib.inc"); require_once("utils.inc"); $foo = array("1",array("complexe" ,"quaternion"));?
LES GLOBALES SONT SYMPA Ce code requiert utils.inc une deuxième fois, car il est requis dans foolib.inc Utilisation de GoodTea:
Le Earl Grey est délicieux!
Affichage de foo:
Array ([0] = 1 [1] = Array ([0] = complexe [1] = quaternion))
Notez aussi que, de la même manière que les préprocesseurs traitent les #include, cette commande est exécutée au moment de la compilation, c'est-à-dire lorsque le script est analysée, et avant qu'il soit exécuté, et ne doit pas être utilisée pour insérer des données dynamiques liées à l 'éxécution.
Il vaut alors mieux utiliser include_once() ou include().
Pour plus d'exemples avec require_once() et include_once(), jetez un oeil dans le code de PEAR inclus dans la dernière distribution de PHP.
Voir aussi: require(), include(), include_once(), get_required_files(), get_included_files(), readfile(), et virtual().
Précédent
Sommaire
Suivant
Niveau supérieur