Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gestion des exceptions et php4

4 réponses
Avatar
andre rodier
Bonjour,
je souhaiterais savoir si il est possible de rajouter des blocs try/catch
dans un fichier php sans que cela génère d'erreurs si celui-ci est parsé avec un interpréteur php4.

Un peu comme les directives #define du C :

#if ( PHP_VERSION >= 5 )
# define TRY try
#else
# define TRY
#endif

Ce genre de code a-t-il un équivalent en PHP ?
Merci

4 réponses

Avatar
thierry
bonjour

#if ( PHP_VERSION >= 5 )
# define TRY try
#else
# define TRY
#endif

Ce genre de code a-t-il un équivalent en PHP ?
oui


http://fr.php.net/manual/fr/function.define.php
http://fr.php.net/manual/fr/function.defined.php

Avatar
Olivier Miakinen

#if ( PHP_VERSION >= 5 )
# define TRY try
#else
# define TRY
#endif

Ce genre de code a-t-il un équivalent en PHP ?
oui


http://fr.php.net/manual/fr/function.define.php
http://fr.php.net/manual/fr/function.defined.php


Euh... on peut redéfinir ainsi des mots-clés du langage ???

Même si cela était, comment définirais-tu TRY et CATCH pour que le code
suivant ne génère aucune erreur ?

TRY {
$error = 'Toujours lancer cette erreur';
throw new Exception($error);

// le code suivant une exception n'est pas exécuté.
echo 'Jamais exécuté';
}
CATCH (Exception $e) {
echo "Capture de l'exception : ", $e->getMessage(), "n";
}


Avatar
thierry

Euh... on peut redéfinir ainsi des mots-clés du langage ???
Euh non effectivement, enfin pas à cette heure de la soirée en tout

cas.
Je pense que j'avais généralisée la question à "est ce que dans un même
script on peut avoir du code correspondant à plusieurs version de PHP ?"

Même si cela était, comment définirais-tu TRY et CATCH pour que le code
suivant ne génère aucune erreur ?
je ne redéfini pas un mot clé et réflexion faite, j'ai parlé bien vite,

mais je dicerne un début capillotracté de solution

A valider sur un PHP4, et si ça ne parse pas alors il suffit de mettre
des includes à la place de la définition du code.

<?php

//define('PHP_V5', 1);

if ( defined("PHP_V5") ) {
function throwNewException($error) {
throw new exception($error);
}

function tryCatch($f) {
try {
$f();
}
catch (Exception $e) {
echo "Capture de l'exception : ", $e->getMessage(), "n";
}
}

}
else {
function throwNewException($error) {
echo $error;
}

function tryCatch($f) {
$f();
}
}

function go() {
$error = 'Toujours lancer cette erreur';
throwNewException($error);
// le code suivant une exception n'est pas exécuté.
echo 'Jamais exécuté';
}

tryCatch("go");

?>


mea culpa, on est loin de la solution demandée

Avatar
Jean-Marc Molina
andre rodier wrote:
je souhaiterais savoir si il est possible de rajouter des blocs
try/catch
dans un fichier php sans que cela génère d'erreurs si celui-ci est
parsé avec un interpréteur php4.

Un peu comme les directives #define du C :

#if ( PHP_VERSION >= 5 )
# define TRY try
#else
# define TRY
#endif

Ce genre de code a-t-il un équivalent en PHP ?


En C ce code est traité par le préprocesseur, il n'existe pas d'équivalent
en PHP. Se reposer sur les fonctions de gestion d'erreurs de PHP4 ou migrer
vers PHP5. Par contre j'ai rencontré un "framework" qui utilisait cette
syntaxe pour proposer deux versions du code source : "debug" et "release".
Question d'optimisation j'imagine mais je trouve la solution un peu trop
"hardcore" et sans doute inadaptée pour répondre à un problème.