IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Verifier les paramètres d'une fonction


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut Verifier les paramètres d'une fonction
    Bonjour,

    J'aimerais savoir si il est possible de vérifier si une fonction contenu dans une classe a bien tous les arguments qu'on doit lui mettre lors de son appel.
    Si oui est il possible de verifier si les arguments son bien de telle ou telle manière et afficher le problème à l'écran ?

    Exemple :

    Imaginons la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function test($nombres,$values){
    	echo 'Le nombre est :'.$nombres.'<br/>';
    	echo 'La valeur est :'.$values.'<br/>';
    }
    Et un appel de cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $nombre = 6;
    $test->test($nombre);
    Dans l'appel il manque l'argument '$values', or celui-ci devrait être obligatoire. J'aimerais que cela affiche à l'écran.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Il manque l'argmument '$values' pour la fonction 'test()'.
    Est ce que cela est possible.

    Merci d'avance

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,

    Ne pas fournir un paramètre déclenche une erreur que tu peux éventuellement gérer avec un gestionnaire d'erreur.
    Tu dois aussi gérer l'existence des paramètres dans ta fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php
    function foo($param1, $param2) {
        if (isset($param1)) echo $param1;
        if (isset($param2)) echo $param2;
    }
     
    function myErrorHandler($errno, $errstr, $errfile, $errline)
    {
        switch ($errno) {
        case E_USER_ERROR:
            echo "<b>Mon ERREUR</b> [$errno] $errstr<br />\n";
            echo "  Erreur fatale sur la ligne $errline dans le fichier $errfile";
            echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
            echo "Arrêt...<br />\n";
            exit(1);
            break;
     
        case E_USER_WARNING:
            echo "<b>Mon ALERTE</b> [$errno] $errstr<br />\n";
            break;
     
        case E_USER_NOTICE:
            echo "<b>Mon AVERTISSEMENT</b> [$errno] $errstr<br />\n";
            break;
     
        default:
            if ($errno == 2)
                echo "Paramètre manquant. Message d'erreur = $errstr";
            else
                exit($errstr);
            break;
        }
     
        /* Ne pas exécuter le gestionnaire interne de PHP */
        return true;
    }
     
    set_error_handler('myErrorHandler');
     
    foo('bar');
    Mais si le paramètre est vraiment obligatoire, je préfère personnellement laisser le script se planter.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 50
    Points
    50
    Par défaut
    Salut,

    Pour reprendre ton exemple je vois quelque chose de simple du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public function test($nombres,$values){
            if(empty($nombres)){
                  echo "Le nombre $nombres est vide !";
            }elseif(empty($values)){
                  echo "La valeur $values est vide !";
            }else{
    	       echo 'Le nombre est :'.$nombres.'<br/>';
    	       echo 'La valeur est :'.$values.'<br/>';
            }
    }

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Merci bien, cela marche très bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Documenter les paramètres d'une fonction
    Par sitaktif dans le forum Caml
    Réponses: 2
    Dernier message: 04/02/2009, 05h46
  2. Connaitre par une requête les paramètres d'une fonction
    Par katoyi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/05/2008, 20h00
  3. Réponses: 2
    Dernier message: 29/08/2007, 19h43
  4. Réponses: 11
    Dernier message: 06/09/2006, 12h48
  5. [PHP 4.4.2] Récupérer les paramètres d'une fonction
    Par stailer dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 21h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo