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