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
?
|
|
Puis, vous écrivez un script
cause_error_require.php
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)
;
?
|
|
Lorsque vous exécutez le script ci-dessus, le résultat sera (sous
PHP 4.01pl2):
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 :
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"))
;
?
|
|
L'exécution de ce script, sous PHP 4.0.1pl2, donne :
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(
)
.