Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2311 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP][Resolu] Sortir du php proprement

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP][Resolu] Sortir du php proprement

n°1165356
nlc
Le mieux est l'ennemi du bien
Posté le 30-07-2005 à 01:29:12  profilanswer
 

Bonsoir a tous.
Je debute en php et j'ai une question un peu particuliere. Voici le code suivant pour exemple :
 
exemple.php :
 
<html>
<body>
<?
 $test1 = 1;
 $test2 = 2;
 $test3 = 3;
 
 if ( $test1 == 1 )
     { print "test1 est bien a 1";
       if ( $test2 == 2 )
           { print "test2 est bien a 2";  
             if ( $test3 == 3 )
                 { print "test3 est bien a 3";  
                   // traitement
                 }
             else
                 { print "Erreur ! test3 n'est pas a 3 !";
                 }
           }
       else
           { print "Erreur ! test2 n'est pas a 2 !";
           }
     }
 else
     { print "Erreur ! test1 n'est pas a 1 !";
     }
?>  
</body>
</html>
 
 
Ne trouvez vous pas ce code completement illisible ? Meme moi j'ai du mal a m'y retrouver, alors j'imagine que vous devez bien scruter a qui appartiennent les else pour savoir ce qui se passe si...etc...
 
Faisant pas mal de C, pour ecrire un code propre j'aurai plutot ecrit ceci, qui fait exactement la meme chose mais est largement plus lisible :
 
<html>
<body>
<?
 $test1 = 1;
 $test2 = 2;
 $test3 = 3;
 
 if ( $test1 != 1 )
     { print "Erreur ! test1 n'est pas a 1 !";
       return;
     }
 print "test1 est bien a 1";
 
 if ( $test2 != 2 )
     { print "Erreur ! test2 n'est pas a 2 !";
       return;
     }
 print "test2 est bien a 2";  
 
 if ( $test3 != 3 )
     { print "Erreur ! test3 n'est pas a 3 !";
       return;
     }
 print "test3 est bien a 3";  
 
 // traitement
?>  
</body>
</html>
 
 
Seulement voila, vous avez peut etre deviné mon probleme ! Lorsque j'utilise la methode ci dessus, le </body></html> n'est pas renvoyé au navigateur...
 
Meme probleme si je met exit a la place de return. Il n'existe pas une commande pour arreter d'interpreter la zone php mais sans couper ce qu'il y a derriere ?
 
Des idées ?
 
Merci a tous.


Message édité par nlc le 30-07-2005 à 13:24:41
mood
Publicité
Posté le 30-07-2005 à 01:29:12  profilanswer
 

n°1165364
WhatDe
Posté le 30-07-2005 à 01:47:06  profilanswer
 

edit: j'ai rien dit il est trop tard mon cerveau est en compote.


Message édité par WhatDe le 30-07-2005 à 01:55:55
n°1165366
nlc
Le mieux est l'ennemi du bien
Posté le 30-07-2005 à 01:48:03  profilanswer
 

Ok, tu repondras demain alors ;) Bonne nuit !


Message édité par nlc le 30-07-2005 à 01:57:50
n°1165413
sielfried
Posté le 30-07-2005 à 09:35:08  profilanswer
 
n°1165414
sielfried
Posté le 30-07-2005 à 09:38:20  profilanswer
 

Sinon, tu mets ça dans une fonction.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1165424
gatsusat
Posté le 30-07-2005 à 10:31:37  profilanswer
 

+1 pour sielfried, tu créés une function dans l'entête de ta page ou pendant le traitement puis tu appelles cette fonction

n°1165451
FlorentG
Unité de Masse
Posté le 30-07-2005 à 11:36:17  profilanswer
 

Code :
  1. <?php require('test.php'); ?>
  2. [...]
  3. <body>
  4. <?php
  5.   process_tests();
  6. ?>
  7. </body>
  8. </html>


 
fichier test.php :

Code :
  1. <?php
  2.   function test1() {
  3.     if($test1 == 1) {
  4.       echo 'test1 est bien a 1';
  5.       return true;
  6.    
  7.     } else {
  8.  
  9.       echo 'Erreur ! test1 n'est pas a 1 !';
  10.       return false;
  11.     }
  12.   }
  13.   function test2() {
  14.     if($test2 == 2) {
  15.       echo 'test2 est bien a 2';
  16.       return true;
  17.    
  18.     } else {
  19.  
  20.       echo 'Erreur ! test2 n'est pas a 2 !';
  21.       return false;
  22.     }
  23.   }
  24.   function test3() {
  25.     if($test3 == 3) {
  26.       echo 'test3 est bien a 3';
  27.       return true;
  28.    
  29.     } else {
  30.  
  31.       echo 'Erreur ! test3 n'est pas a 3 !';
  32.       return false;
  33.     }
  34.   }
  35.   function process_tests() {
  36.     if(test1()) {
  37.       if(test2()) {
  38.         if(test3()) {
  39.          
  40.           // Traitement
  41.         }
  42.       }
  43.     }
  44.   }
  45. ?>


 
C'est déjà plus lisible... Maintenant je connais pas la nature de tes tests, à voir s'ils sont similaires ou pas, si on peut utiliser une fonction générique au lieu de ces immondes trois fonctions de test :D


---------------
last.fmflickr
n°1165486
nlc
Le mieux est l'ennemi du bien
Posté le 30-07-2005 à 12:32:30  profilanswer
 

En fait mon exemple etait juste là pour illustrer le probleme.
Donc si je comprends bien, y'a pas de commande pour stopper l'interpretation php sans couper ce qu'il se trouve derriere.
 
J'ai bien noté qu'on peut faire un die( .... ), mais c'est vraiment pas beau, car il faudrait mettre ca a chaque test defaillant. Et puis dans mon cas j'ai juste </body></html>, mais dans des pages plus complexes il peut y avoir beaucoup plus...


Message édité par nlc le 30-07-2005 à 12:44:32
n°1165490
sielfried
Posté le 30-07-2005 à 12:44:04  profilanswer
 

Ben tu peux toujours mettre le html correspondant dans une variable php, genre $endoutput, et faire die($erreur . $endoutput) quand ça foire. C'est pas forcément super joli mais c'est assez pratique pour pouvoir faire du "or die" sans couper la fin du html à chaque fois.
 
Sinon dans ton cas tu peux toujours ruser assez facilement, tu fais  

Code :
  1. do {
  2.    ...
  3. } while (false);

et tu fais des break là où ça te chante.
 
Pas magnifique non plus je sais, mais ça marche. [:spamafote]  
 
Et si vraiment tu veux pas de tout ça, t'as les fonctions.


Message édité par sielfried le 30-07-2005 à 12:46:28

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1165493
mcjoedassi​n
Posté le 30-07-2005 à 12:48:20  profilanswer
 

eh ben tu mets tout dans une fonction, comme ca le return quitte la fonction, comme en C ...
 
<?
 function main() {
   $test1 = 1;  
   ...
   // traitement
 }
?>  

mood
Publicité
Posté le 30-07-2005 à 12:48:20  profilanswer
 

n°1165494
nlc
Le mieux est l'ennemi du bien
Posté le 30-07-2005 à 12:48:36  profilanswer
 

Effectivement c'est une astuce possible.
 
Mais j'avoue etre etonné du fait que stopper php par un return, un exit ou un die ne fasse pas que stopper l'interpretation de tout ce qui se trouve entre <? et ?> en laissant tranquille le reste.
 
 
 
 

n°1165496
nlc
Le mieux est l'ennemi du bien
Posté le 30-07-2005 à 12:54:26  profilanswer
 

mcjoedassin a écrit :

eh ben tu mets tout dans une fonction, comme ca le return quitte la fonction, comme en C ...
 
<?
 function main() {
   $test1 = 1;  
   ...
   // traitement
 }
?>


 
Et bien fait c'est bien ce que j'ai fait, par intuition, et j'appelle la fonction juste apres sa declaration :
 
<?
 function main() {
   $test1 = 1;  
   ...
   // traitement
 }
 
 main();
?>
 
Ca evite de faire un fichier a part quand la page n'est pas complexe.
Je crois que je vais me resigner a utiliser cette methode, car je vois qu'il n'existe pas de solution pour sortir du php, mais uniquement de la partie interpretation, en laissant tranquille ce qu'il y a derriere.

n°1165499
mcjoedassi​n
Posté le 30-07-2005 à 13:03:46  profilanswer
 

je crois que php5 implémente un système d'exceptions (cf.
http://fr2.php.net/manual/fr/language.exceptions.php)
...

n°1165507
nlc
Le mieux est l'ennemi du bien
Posté le 30-07-2005 à 13:24:14  profilanswer
 

Merci pour vos lumieres, je ferai systematiquement une fonction main(), et donc tout le code sera dedans.
A+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP][Resolu] Sortir du php proprement

 

Sujets relatifs
Optimisation de scripts PHP, comment la calculer.Récupérer un nom de fichier (sans l'extension) en Php
[resolu]Warning qui s'affiche malgré un traitement de l' erreur[Résolu] Dephi - Webbrowser
[VBS] [Résolu] Libération mémoire d'objet WORD[VBS] [Résolu]Centrer du texte dans un document Word
[RESOLU] Recherche d'un string dans un tableau[CSS/ IE mac vs IE pc] Y a 1 developpeur sous Mac [Resolu]
[PHP - MySQL] Récupérer choix d'un "enum" dans BDD[EMPLOI] Recherche Programmeur PHP / Graphiste
Plus de sujets relatifs à : [PHP][Resolu] Sortir du php proprement


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR