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 :

Les Class et les isset ou is_null [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut Les Class et les isset ou is_null
    Bonjour.

    J'ai vu qu'on pouvait placer des isset dans les classes ou les instances d'objet.

    A quoi ça peut vraiment servir si on va quand même avoir une erreur ?

    Si je fais une erreur à l'extérieur de de class comme dans l'instance d'un objet, ça va m'afficher une erreur quand même.

    Ici, je simule une erreur et ma vérification ne va pas marcher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(is_null($instance->add()))
    echo "Erreur: ";
     
    $instance->add();
     
    echo $instance->show();
    Je parle des isset, is_null et des vérification dans une méthode ou lors de l'instanciation.

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 334
    Par défaut
    Bonsoir,

    je ne comprend pas le test

    isset() sur une méthode ? quel est le but ?

    c'est pour tester uniquement si une variable existe(isset) ou est nulle(is_null)
    en objet, une variable est une propriété

    ecrire ca ok :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (is_null($instance->titre)) echo "Erreur: la propriété titre de l'objet est egale a null";
    mais ce n'est pas spécifique objet

    par contre if (is_null( $instance->getTitre() )) ce n'est pas bon : getTitre() est une méthode

  3. #3
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    J'étais en train de tester comme ceci :

    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
    $n1 = "a";
    $n2 = 4;
     
    $strings = array($n1,$n2);
    foreach ($strings as $test) 
    {
      if (ctype_digit($test)) 
      {
        $n1=null;
        $n2=null;      
      } 
      else 
      {
        $n1=$n1;
        $n2=$n2;
      }
    }
     
    $instance->add($n1,$n2);
    echo $instance->show();
    Pour le moment, ça laisse passé celui qui est un digit.
    Mais, faut que ça soit les deux ou bien indiquer une erreur.
    Ça peut devenir lourd ce genre de test à la longue.

    Je viens d'essayer votre commande, ça m'indique qu'il ne peut pas
    tester sur une propriété private. Mais, ça m'indiquerait aussi
    qu'il manque soit un argument si je l'omet, ou si je mets un string,
    un autre erreur.

    C'est de mettre deux variables externe et de les tester.. c'est ce que
    je vois comme solution.

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 334
    Par défaut
    je comprend rien

    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
    class objet {
     private $a,$b;
     
     function add($a=null,$b=null){
       if (($a==null) || is_null($b)) {
           throw new Exception('Parametre invalide.');
       }
       $this->a =$a;
       $this->b =$b;
     }
     
     public function setA($a){
        if ($a==null) throw new Exception('Parametre invalide.');
        $this->a = $a;
     }
     
     public function setB($b){
        if ($b==null) throw new Exception('Parametre invalide.');
        $this->b = $b;
     }
     
     public function ajouter($a,$b){
        $this->setA($a);
        $this->setB($b);
     }
     
    }
    c'est ca le but ??

  5. #5
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Si l'idée est comme tester si c'est un type digit à $a et $b quand je mets à J'ai fait ceci et ça indique un non digit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $a = 1;
    $b = 20;
     
    if (ctype_digit($a) && ctype_digit($b)){
        $instance->add($a,$b);
    }
    else{
        $instance->add(1,1); //indiquer 0 et 0 par défaut. Aimerais mieux un message d'erreur personalisé. 
    }
    Je vais essayer votre bout de code.

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 334
    Par défaut
    j'ai utilisé des exception dans les classes , on les utilise comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try
    {
         $instance->add(null,1);
         $instance->echo();
    } catch (Exception $e) {
         echo 'Exception reçue : '.$e->getMessage();
         // throw $e; si je désire stopper php  sur cette erreur
    }
    a toi de mettre les tests que tu desires a l'intérieur de la méthode add !

  7. #7
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Dans le fond, si dans un formulaire, je dois faire des vérifications
    comme quoi add() contient bien deux chiffres 2,2 par exemple,
    c'est ok ça passe, sinon envoyer un message d'erreur. Mais pas
    celui de PHP. J'ai penser tester en dehors de la classe.

    Si j'essaie d'appliquer l'avant dernier bout de code proposé, ça me donnerait ceci à mon code si j'ai bien compris:

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
     
    class Pizza{
     
        private $prenom;
        public $command=0;
        public $prix=0;
     
        public function __construct($pnom){
            $this->prenom = $pnom;
        }
     
        public function add($cmand,$cout){
     
            if (($cmand==null) || is_null($cout)) {
                   throw new Exception('Parametre invalide.');
               }
               $this->command =$cmand;
               $this->prix =$cout;
     
            $this->command += $cmand;
            $this->prix += $cout;
        }
     
        public function setCommand($cmand){
            if ($cmand==null) throw new Exception('Parametre invalide.');
            $this->command = $cmand;
         }
     
         public function setPrix($cout){
            if ($cout==null) throw new Exception('Parametre invalide.');
            $this->prix = $cout;
         }
     
         public function ajouter($cmand,$cout){
        $this->setCommand($cmand);
        $this->setPrix($cout);
     }
     
     
        public function show(){
            $aff[] = '';
            $aff = array($this->command=>$this->prix);
     
            foreach ($aff as $key => $value) {
                $more = ($this->command>1) ? 's' : '';
                return '<b>'.$key.'</b> pizza'.$more.' vendue'.$more.' pour un total de <b>'.number_format($value,2, '.', ' ').'$</b>.';
            }
        }
     
    }
     
    $instance = new Pizza("Garnis");
     
    $instance->add(3,3);
    echo $instance->show();
     
     
    ?>
    J'ai surement pas bien fait les choses.

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

Discussions similaires

  1. les services métiers / les classes métiers / les classes services
    Par titititiangel dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 27/05/2013, 11h01
  2. les methodes et les associations entre les classes
    Par zin_rbt dans le forum Diagrammes de Classes
    Réponses: 1
    Dernier message: 24/05/2010, 14h41
  3. les classes et les templates dans les plugins
    Par asoka13 dans le forum C++
    Réponses: 22
    Dernier message: 24/01/2008, 17h11
  4. Réponses: 31
    Dernier message: 30/03/2006, 16h57

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