J'ai un traitement répétitif ( = une boucle principale externe ) à
faire dans un script php.
Le problème, est que ce scripts php contient d'autres scripts php
inclus ( tous dans le même répertoire que le script initial ), avec
l'instruction include("script.php");
Cepndant, ces include sont contenus dans des blocs de code du script
initial, qui ne sont rencontrés à l'exécution, que dans des conditions
du type :
if($condition)
{ // bloc de code
include("script.php");
}
Comme l'exécution du script initial passera parfois avec certitude
sur ces conditions, ( parfois réalisées parfois non ), est-ce que je
peux être sûr, que ces scripts inclus, ont déjà leur code php inclus à
la compilation dans le script initial, et qu'il n'y aura pas d'effet de
bord quelconque, à faire ces includes ?
Sinon, est-ce-que des require sont ou des includes sont plus indiqués
pour que les inclusions soient "statiques", donc pour les codes inclus
donnent un script d'ensemble fixe quelles que soient les conditions
rencontrées lors de son exécution ?
Il me semble que cette question est classique, mais j'ai l'impression
que le PHP Manual est devenu depuis quelques temps, plus difficile à
comprendre.
This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --XjOoIvIMpkC3Q60JidqapPGGSbxg5mxDI Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Bonjour,
Pour moi require = requiert donc présence obligatoire du fichier. Si absence de celui-ci le script appelant s'arrête! Pour moi include = inclure donc présence non impérative Si pas pré sent on peut continuer le script appelant.
Enfin c'est dans cet esprit que j'utilise ces deux commandes.
Amitiés
-- Yannick VOYEAUD Nul n'a droit au superflu tant que chacun n'a pas son nécessaire (Camille JOUFFRAY 1841-1924, maire de Vienne) http://www.voyeaud.org
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--XjOoIvIMpkC3Q60JidqapPGGSbxg5mxDI
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Bonjour,
Pour moi require = requiert donc présence obligatoire du fichier. Si
absence de celui-ci le script appelant s'arrête!
Pour moi include = inclure donc présence non impérative Si pas pré sent
on peut continuer le script appelant.
Enfin c'est dans cet esprit que j'utilise ces deux commandes.
Amitiés
--
Yannick VOYEAUD
Nul n'a droit au superflu tant que chacun n'a pas son nécessaire
(Camille JOUFFRAY 1841-1924, maire de Vienne)
http://www.voyeaud.org
This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --XjOoIvIMpkC3Q60JidqapPGGSbxg5mxDI Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Bonjour,
Pour moi require = requiert donc présence obligatoire du fichier. Si absence de celui-ci le script appelant s'arrête! Pour moi include = inclure donc présence non impérative Si pas pré sent on peut continuer le script appelant.
Enfin c'est dans cet esprit que j'utilise ces deux commandes.
Amitiés
-- Yannick VOYEAUD Nul n'a droit au superflu tant que chacun n'a pas son nécessaire (Camille JOUFFRAY 1841-1924, maire de Vienne) http://www.voyeaud.org
Et vous constatez que dans les cas où l condition n'est pas réalisée, le code n'apparaît pas ?
C'est précisément ce que dit la page en question.
NON Elle dit : Contrairement à include(), require() va toujours lire dans le fichier cible, même si la ligne n'est jamais exécutée. Si vous souhaitez une inclusion conditionnelle, utilisez include().
EOF
Jean Francois Ortolo <ortolo.jeanfrancois_nospam@free.fr.invalid>
écrivait :
Et vous constatez que dans les cas où l condition n'est pas réalisée,
le code n'apparaît pas ?
C'est précisément ce que dit la page en question.
NON
Elle dit :
Contrairement à include(), require() va toujours lire dans le fichier
cible, même si la ligne n'est jamais exécutée. Si vous souhaitez une
inclusion conditionnelle, utilisez include().
Et vous constatez que dans les cas où l condition n'est pas réalisée, le code n'apparaît pas ?
C'est précisément ce que dit la page en question.
NON Elle dit : Contrairement à include(), require() va toujours lire dans le fichier cible, même si la ligne n'est jamais exécutée. Si vous souhaitez une inclusion conditionnelle, utilisez include().
EOF
Fred
On 31/05/2014 15:28, Otomatic wrote:
Jean Francois Ortolo écrivait :
Et vous constatez que dans les cas où l condition n'est pas réalisée, le code n'apparaît pas ?
C'est précisément ce que dit la page en question.
NON Elle dit : Contrairement à include(), require() va toujours lire dans le fichier cible, même si la ligne n'est jamais exécutée. Si vous souhaitez une inclusion conditionnelle, utilisez include().
EOF
Cette doc de l'univ-paris7 concerne php 3/4 et elle est périmée.
En PHP5, on peut mettre indiférement include ou require dans une boucle et le fichier ne sera lu que si include ou require sont réellement executés. C'est vérifiable avec fileatime().
Fred
On 31/05/2014 15:28, Otomatic wrote:
Jean Francois Ortolo<ortolo.jeanfrancois_nospam@free.fr.invalid>
écrivait :
Et vous constatez que dans les cas où l condition n'est pas réalisée,
le code n'apparaît pas ?
C'est précisément ce que dit la page en question.
NON
Elle dit :
Contrairement à include(), require() va toujours lire dans le fichier
cible, même si la ligne n'est jamais exécutée. Si vous souhaitez une
inclusion conditionnelle, utilisez include().
EOF
Cette doc de l'univ-paris7 concerne php 3/4 et elle est périmée.
En PHP5, on peut mettre indiférement include ou require dans une
boucle et le fichier ne sera lu que si include ou require sont
réellement executés.
C'est vérifiable avec fileatime().
Et vous constatez que dans les cas où l condition n'est pas réalisée, le code n'apparaît pas ?
C'est précisément ce que dit la page en question.
NON Elle dit : Contrairement à include(), require() va toujours lire dans le fichier cible, même si la ligne n'est jamais exécutée. Si vous souhaitez une inclusion conditionnelle, utilisez include().
EOF
Cette doc de l'univ-paris7 concerne php 3/4 et elle est périmée.
En PHP5, on peut mettre indiférement include ou require dans une boucle et le fichier ne sera lu que si include ou require sont réellement executés. C'est vérifiable avec fileatime().
Fred
Jean Francois Ortolo
Le 31/05/2014 15:28, Otomatic a écrit :
Jean Francois Ortolo écrivait :
Et vous constatez que dans les cas où l condition n'est pas réalisée, le code n'apparaît pas ?
C'est précisément ce que dit la page en question.
NON Elle dit : Contrairement à include(), require() va toujours lire dans le fichier cible, même si la ligne n'est jamais exécutée. Si vous souhaitez une inclusion conditionnelle, utilisez include().
EOF
Rebonjour Monsieur
Encore une fois, vous entendez par : "lire dans le fichier", l'équivalent de "exécuter le fichier".
Or, la page dit exactement le contraire.
Elle dit : "Le code du fichier n'est exécuté que si la condition est réalisée". ( résumé ).
Bien à vous.
Amicalement.
Jean François Ortolo
Le 31/05/2014 15:28, Otomatic a écrit :
Jean Francois Ortolo <ortolo.jeanfrancois_nospam@free.fr.invalid>
écrivait :
Et vous constatez que dans les cas où l condition n'est pas réalisée,
le code n'apparaît pas ?
C'est précisément ce que dit la page en question.
NON
Elle dit :
Contrairement à include(), require() va toujours lire dans le fichier
cible, même si la ligne n'est jamais exécutée. Si vous souhaitez une
inclusion conditionnelle, utilisez include().
EOF
Rebonjour Monsieur
Encore une fois, vous entendez par : "lire dans le fichier",
l'équivalent de "exécuter le fichier".
Or, la page dit exactement le contraire.
Elle dit : "Le code du fichier n'est exécuté que si la condition est
réalisée". ( résumé ).
Et vous constatez que dans les cas où l condition n'est pas réalisée, le code n'apparaît pas ?
C'est précisément ce que dit la page en question.
NON Elle dit : Contrairement à include(), require() va toujours lire dans le fichier cible, même si la ligne n'est jamais exécutée. Si vous souhaitez une inclusion conditionnelle, utilisez include().
EOF
Rebonjour Monsieur
Encore une fois, vous entendez par : "lire dans le fichier", l'équivalent de "exécuter le fichier".
Or, la page dit exactement le contraire.
Elle dit : "Le code du fichier n'est exécuté que si la condition est réalisée". ( résumé ).
Bien à vous.
Amicalement.
Jean François Ortolo
Denis Beauregard
Le Sat, 31 May 2014 18:16:49 +0200, Jean Francois Ortolo écrivait dans fr.comp.lang.php:
Encore une fois, vous entendez par : "lire dans le fichier", l'équivalent de "exécuter le fichier".
Or, la page dit exactement le contraire.
Elle dit : "Le code du fichier n'est exécuté que si la condition est réalisée". ( résumé ).
À mon avis, il y a 2 situations différentes.
if condition include ou require fin de condition
Si la condition est vraie, le fichier est inclus.
Si la condition est fausse, le fichier n'est pas inclus. Cela signifie 2 possibilités. ==> Soit la ligne de code n'est pas exécutée, donc un require sans fichier ne donnera pas d'erreur, ==> soit les include et require sont exécutés de toutes façons mais leur code interne est ignoré.
Il me semble que le 2e cas signifie en fait que PHP a un préprocesseur puis un processeur indépendants, alors que le 1er cas, qu'il y a un seul processur. C'est ce qu'on appelle une grosse différence entre 2 versions majeures d'un logiciel (entre 3/4 et 5 mais pas entre 3 et 3.1).
Vérifions ce que fait PHP 5 (celui que j'ai sur mon ordi).
<?php
if (0) { require ("toto.php"); }
?>
toto.php n'existe pas et cela ne génère pas d'erreur. Donc, on n'a pas de préprocesseur séparé. Avec if (1), il y a erreur.
Denis
Le Sat, 31 May 2014 18:16:49 +0200, Jean Francois Ortolo
<ortolo.jeanfrancois_nospam@free.fr.invalid> écrivait dans
fr.comp.lang.php:
Encore une fois, vous entendez par : "lire dans le fichier",
l'équivalent de "exécuter le fichier".
Or, la page dit exactement le contraire.
Elle dit : "Le code du fichier n'est exécuté que si la condition est
réalisée". ( résumé ).
À mon avis, il y a 2 situations différentes.
if condition
include ou require
fin de condition
Si la condition est vraie, le fichier est inclus.
Si la condition est fausse, le fichier n'est pas inclus. Cela
signifie 2 possibilités.
==> Soit la ligne de code n'est pas exécutée, donc un require sans
fichier ne donnera pas d'erreur,
==> soit les include et require sont exécutés de toutes façons mais
leur code interne est ignoré.
Il me semble que le 2e cas signifie en fait que PHP a un préprocesseur
puis un processeur indépendants, alors que le 1er cas, qu'il y a un
seul processur. C'est ce qu'on appelle une grosse différence entre 2
versions majeures d'un logiciel (entre 3/4 et 5 mais pas entre 3 et
3.1).
Vérifions ce que fait PHP 5 (celui que j'ai sur mon ordi).
<?php
if (0) {
require ("toto.php");
}
?>
toto.php n'existe pas et cela ne génère pas d'erreur. Donc, on n'a pas
de préprocesseur séparé. Avec if (1), il y a erreur.
Le Sat, 31 May 2014 18:16:49 +0200, Jean Francois Ortolo écrivait dans fr.comp.lang.php:
Encore une fois, vous entendez par : "lire dans le fichier", l'équivalent de "exécuter le fichier".
Or, la page dit exactement le contraire.
Elle dit : "Le code du fichier n'est exécuté que si la condition est réalisée". ( résumé ).
À mon avis, il y a 2 situations différentes.
if condition include ou require fin de condition
Si la condition est vraie, le fichier est inclus.
Si la condition est fausse, le fichier n'est pas inclus. Cela signifie 2 possibilités. ==> Soit la ligne de code n'est pas exécutée, donc un require sans fichier ne donnera pas d'erreur, ==> soit les include et require sont exécutés de toutes façons mais leur code interne est ignoré.
Il me semble que le 2e cas signifie en fait que PHP a un préprocesseur puis un processeur indépendants, alors que le 1er cas, qu'il y a un seul processur. C'est ce qu'on appelle une grosse différence entre 2 versions majeures d'un logiciel (entre 3/4 et 5 mais pas entre 3 et 3.1).
Vérifions ce que fait PHP 5 (celui que j'ai sur mon ordi).
<?php
if (0) { require ("toto.php"); }
?>
toto.php n'existe pas et cela ne génère pas d'erreur. Donc, on n'a pas de préprocesseur séparé. Avec if (1), il y a erreur.