Arrêter l'exécution d'une class.

alphanono Messages postés 39 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 25 mai 2009 - 29 avril 2009 à 16:15
alphanono Messages postés 39 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 25 mai 2009 - 30 avril 2009 à 18:14
Salut !

Existe-t'il une façon d'arrêter l'exécution d'une classe ??

Admettons que j'ai ceci :

<?php
class demo {
    function __construct(){
        $this->essai1();
    }
    function essai1(){
        echo 'niveau 1';
        
--> j'arrête le déroulement de ma classe parceque je vérifie quelque chose de négatif
        
echo 'niveau 2';
    }
}

$var = new demo();
echo "c'est pas gagné !";
?>

Je souhaite arrêter tout ce qui se passe dans l'appel de la classe à un moment donné mais pas tout le script. Un exit() par exemple arrête tout il me semble. Moi je voudrais que ça continue en dehors de l'appel de la classe.

4 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
29 avril 2009 à 17:54
Salut,

Si c'est pour une gestion des erreurs tu peux lever une exception.
0
alphanono Messages postés 39 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 25 mai 2009
29 avril 2009 à 18:20
Il faut que je le place où mon contrôle d'exception pour que ça arrête la classe entière ?
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
29 avril 2009 à 22:52
Avant d'aller plus loin je te propose de lire la documentation des exceptions en php, ça répondra grandement a pas mal de tes questions.
http://fr3.php.net/manual/fr/language.exceptions.php
0
alphanono Messages postés 39 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 25 mai 2009
30 avril 2009 à 18:14
Arf ... effectivement, ça fait longtemps que j'utilise les exceptions mais je ne sais pas pourquoi, je les ai toujours utilisées dans un bloc try/catch écrit d'un trait (dans une même fonction par exemple)

Donc pour ceux qui tomberaient sur ce message et que ça intéresserait :

<?php
class demo {
    function __construct(){
        try{
            $this->essai1();
            $this->essai2();
        } catch (Exception $e){
            echo $e;
        }
    }
    function essai1(){
        echo 'niveau 1';
        throw new Exception('J'arrête ici le déroulement de ma classe');
        echo 'niveau 2';
    }
    function essai2(){
        echo 'niveau 3';
    }

}

$var = new demo();
echo "c'est pas gagné !";
?>
résultat :
niveau 1
c'est pas gagné !

La définition donnée par la doc c'est que quand une exception est lancée par un Throw, le système va jusqu'au premier catch qu'il trouve sans exécuter tout ce qu'il y a entre le throw et le catch.
0
Rejoignez-nous