Sortir du php proprement [PHP][Resolu] - PHP - Programmation
Marsh Posté le 30-07-2005 à 01:47:06
edit: j'ai rien dit il est trop tard mon cerveau est en compote.
Marsh Posté le 30-07-2005 à 01:48:03
Ok, tu repondras demain alors Bonne nuit !
Marsh Posté le 30-07-2005 à 09:35:08
die('</body></html>');
Marsh Posté le 30-07-2005 à 09:38:20
Sinon, tu mets ça dans une fonction.
Marsh Posté le 30-07-2005 à 10:31:37
+1 pour sielfried, tu créés une function dans l'entête de ta page ou pendant le traitement puis tu appelles cette fonction
Marsh Posté le 30-07-2005 à 11:36:17
Code :
|
fichier test.php :
Code :
|
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
Marsh Posté le 30-07-2005 à 12:32:30
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...
Marsh Posté le 30-07-2005 à 12:44:04
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 :
|
et tu fais des break là où ça te chante.
Pas magnifique non plus je sais, mais ça marche.
Et si vraiment tu veux pas de tout ça, t'as les fonctions.
Marsh Posté le 30-07-2005 à 12:48:20
eh ben tu mets tout dans une fonction, comme ca le return quitte la fonction, comme en C ...
<?
function main() {
$test1 = 1;
...
// traitement
}
?>
Marsh Posté le 30-07-2005 à 12:48:36
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.
Marsh Posté le 30-07-2005 à 12:54:26
mcjoedassin a écrit : eh ben tu mets tout dans une fonction, comme ca le return quitte la fonction, comme en C ... |
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.
Marsh Posté le 30-07-2005 à 13:03:46
je crois que php5 implémente un système d'exceptions (cf.
http://fr2.php.net/manual/fr/language.exceptions.php)
...
Marsh Posté le 30-07-2005 à 13:24:14
Merci pour vos lumieres, je ferai systematiquement une fonction main(), et donc tout le code sera dedans.
A+
Marsh Posté le 30-07-2005 à 01:29:12
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