|
Sommaire
Les structures de contrôle
if
else
elseif
Syntaxe alternative
while
do..while
for
foreach
break
continue
switch
declare
require
include
require_once
include_once
|
4.7.15 require_once
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 | utils.inc |
<?php define(PHPVERSION, floor(phpversion())); echo "LES GLOBALES SONT SYMPASn"; function goodTea() { return "Le Earl Grey est délicieux!"; } ?>
|
| foolib.inc |
<?php require ("utils.inc"); function showVar($var) { if (PHPVERSION == 4) { print_r($var); } else { dump_var($var); } } // Une série de fonctions ?>
|
Puis, vous écrivez un script cause_error_require.php| cause_error_require.php |
<?php require("foolib.inc"); /* Ceci génère une erreur*/ require("utils.inc"); $foo = array("1",array("complex","quaternion")); echo "Ce code requiert utils.inc une deuxième fois, car il est requis n"; echo "dans foolib.incn"; echo "Utilisation de GoodTea:@: ".goodTea()."n"; echo "Affichage de foo: n"; showVar($foo); ?>
|
Lorsque vous exécutez le script ci-dessus, le
résultat sera (sous PHP 4.01pl2):@:
|
GLOBALS ARE NICE GLOBALS ARE NICE Fatal error:@: Cannot redeclare causeerror() in utils.inc on line 5
|
En modifiant foolib.inc et
cause_errror_require.php
pour qu'elles utilisent require_once
au lieu de require et ne renommant pas le fichier
en avoid_error_require_once.php, on obtient :@:
| foolib.inc (corrigé) |
<?php require_once("utils.inc"); function showVar($var) { ?>
|
| avoid_error_require_once.php |
<?php require_once("foolib.inc"); require_once("utils.inc"); $foo = array("1",array("complexe","quaternion")); ?>
|
L'exécution de ce script, sous PHP 4.0.1pl2, donne :@:
|
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.
|