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 :

tester la fonction is_string [PHP 7]


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut tester la fonction is_string
    Bonjour,

    je fais des tests de mon application et notamment, je voudrais tester si une validation de chaîne de caractères fonctionne bien. Je voudrais donc proposer à mon application une chaîne avec un caractère non valide pour is_string. Mais je ne sais pas quoi lui proposer, vu que tout ce que j'essaye est accepté. Pourriez-vous me proposer un caractère invalide ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    C'est quoi "un caractère non valide pour is_string" ? is_string (comme son nom l'indique) se fout des caractères qu'il y a dans une chaîne, son but c'est juste de dire si oui ou non ta variable est une chaîne, point barre. Cette fonction vérifie juste le type et se moque du contenu. Elle te renverra false si ta variable est un tableau ou un booléen.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Tout à fait, pour is_string() toute chaîne est valide.

    Ce serait comme tester gettype($v) === 'string'
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    OK,

    je cherchais à trouver un cas où la fonction is_string retournerait false. Je commence à penser que cette fonction de validation ne sert à rien dans mon cas, car elle retournera toujours true.
    Voici, ma méthode pour la validation :
    Code php : 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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    public function isValid():bool {
            if (empty($this->id_ticket))
            {
                $this->errors[]="a line without any ID";
            }
            else
            {
     
                if (!is_string($this->product_name))
                {
                   $this->errors[]="For Ticket ID =".$this->id_ticket.', "'
                        .$this->productname.'" is not a string (productname)' ;
                }
     
                if (!is_string($this->assignedgroup))
                {
                    $this->errors[]="For Ticket ID =".$this->id_ticket.', "'
                        .$this->assignedgroup.'" is not a string (assignedgroup)' ;
                }
     
                if  ($this->validateDate($this->submit_date,'d/m/Y H:i')===false)
                {
                    $this->errors[]="For Ticket ID =".$this->id_ticket.', "'
                        .$this->submit_date.'" is not a valid submit date';
                }
     
                if  ($this->ValidateDate($this->last_resolved_date,'d/m/Y H:i')===false)
                {
                    $this->errors[]="For Ticket ID =".$this->id_ticket.', "'
                        .$this->last_resolved_date.'" is not a valid last resolved date';
                }
     
                if ( !in_array(strtolower($this->priority), ['low', 'medium', 'high']) )
                {
                    $this->errors[]="For Ticket ID =".$this->id_ticket.', "'
                        .$this->priority.'" is not an accepted value (priority)' ;
                }
     
                if ( !in_array($this->status, ['Assigned', 'Cancelled', 'Closed', 'In Progress', 'Pending', 'Resolved']) )
                {
                    $this->errors[]="For Ticket ID =".$this->id_ticket.', "'
                        .$this->status.'" is not an accepted value (status)' ;
                }
     
                //tester format de SESA
                $var = $this->submitter_SESA;
                if (!(is_int($var) ) )
                {
                    $this->errors[]="For Ticket ID =".$this->id_ticket.', "'
                        .$this->submitter_SESA." is not in a valid format for SESA (SESA12345 or SESA123456)" ;
                }
     
                if ( !in_array(strtolower($this->incident_type), ["incident"]) )
                {
                    $this->errors[]="For Ticket ID =".$this->id_ticket.', "'
                        .$this->incident_type.'" is not an accepted value (incident_type)' ;
                }
     
                 if ( !in_array( $this->reported_source, ["Chat", "Direct Input", "Email", "Phone", "Web"]) )
                {
                    $this->errors[]="For Ticket ID =".$this->id_ticket.', "'
                        .$this->reported_source.'" is not an accepted value (reported_source)' ;
                }
     
     
            }
     
     
            return(empty($this->errors));
        }
    sachant que les valeurs testées sont le retour de la fonction fgetcsv et que je pense que chaque élément du tableau retourné sera toujours une chaîne de caractères. D'accord ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    sachant que les valeurs testées sont le retour de la fonction fgetcsv et que je pense que chaque élément du tableau retourné sera toujours une chaîne de caractères. D'accord ?
    Effectivement.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  6. #6
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 595
    Points : 879
    Points
    879
    Par défaut
    Effectivement is_string() ne répond pas à ton besoin. Si la question est de savoir quel formatage tu veux pour $this->product_name, alors les expressions régulières seront probablement le bon moyen de faire un test puissant.
    Participez vous aussi !
    Message utile
    Discussion résolue

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

Discussions similaires

  1. [MySQL] Utilisation de la fonction is_string()
    Par jbidou88 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/03/2008, 16h08
  2. tester une fonction
    Par k-eisti dans le forum SQL
    Réponses: 4
    Dernier message: 28/01/2008, 11h05
  3. [JUnit] Comment tester une fonction qui retourne un booléen
    Par Raiden1234 dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 15/12/2007, 19h29
  4. tester une fonction vba
    Par Maxence45 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/11/2007, 17h01
  5. [Mail] Tester la fonction mail en local
    Par fk04 dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2006, 10h52

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