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 :

erreur à l'assignation de valeur dans une classe [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 59
    Par défaut erreur à l'assignation de valeur dans une classe
    Bonjour,

    Je veux utiliser la fonction de classe
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $work->setid(25);

    Mais j'ai une erreur 500 alors que si j'assigne la valeur directement dans ma classe, ça passe. Je ne comprend pas pourquoi.

    Voici le code que j'ai:

    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
     
     
    class Maclasse () {
        public function setId(int $id) {        // assigne l'identifiant de la classe
            if ($id == '-1') {              // si il est négatif, on va ajouter un membre à la collection
                $this->_id = null;
            } else {                        // sinon, on utilise l'identifiant reçu
                $this->_id = $id;
            }
     
    }
     
    $work = new Maclasse();
    $id = $_POST['id']    // vaut '25'
     
    $work->setId($id);  // erreur 500 depuis le serveur ====> Call to a member function setId() on null
     
    $work->_id = $id;  // Fonctionne correctement

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    tu ne donnes pas le code complet, vu que par exemple, il manque la déclaration de la propriété public _id;, mais un truc qui me gêne, c'est la parenthèse derrière la déclaration de la classe (tu mets class Maclasse () {... au lieu de class Maclasse {...). Aucune idée si ton erreur vient de là, mais corrige...

  3. #3
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Laurent a raison. A ceci près que c'est protected _id.
    De plus, il te manquait une parenthèse fermante.
    Tu devrais activer les messages d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Maclasse {
      protected int _id;
      public function setId(int $id) {        // assigne l'identifiant de la classe
        if ($id == '-1') {              // si il est négatif, on va ajouter un membre à la collection
            $this->_id = null;
        } else {                        // sinon, on utilise l'identifiant reçu
            $this->_id = $id;
        }
      }
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    OK pour protected à la place de public, mais la parenthèse,manquante, c'est où ?

  5. #5
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 137
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    OK .... , mais la parenthèse,manquante, c'est où ?
    lige 11, fermeture du bloc class Maclasse () {
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Merci, je cherchais une parenthèse, pas une accolade

  7. #7
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Ah vi, accolade, parenthèse, pardon, je mélange tout le temps les deux noms.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  8. #8
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut (int)
    Bonsoir

    Tu as défini ta fonction setId() comme requérant un entier comme paramètre et c'est super d'avoir fait cela !

    Reste que tu as fait le boulot à moitié

    Du coup, tu dois forcer le type de ta variable comme ci-dessous afin que le compilateur comprenne bien que $id est un entier.

    $id = (int) $_POST['id'];Bonne soirée

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 59
    Par défaut
    Bonjour à tous,

    merci pour vos réponses.
    Le code que j'ai partagé avec vous était un assemblage manuel de la partie de code posant problème car mes classes sont beaucoup plus grandes et je ne voulais pas encombrer mon post avec du code inutile.
    Du coup, j'ai introduit des erreurs lors de la rédaction du post. Mes parenthèses et accolades sont bien équilibrées dans mon code, mais vous ne pouviez pas le savoir.

    Je vous prie de m'en excuser.

    @cavo789: code corrigé à ce niveau au niveau du typage, merci.

    J'ai fini par trouver l'erreur : Je dérive mes programmes en copiant un code source d'un programme précédent qui est relativement proche de celui que je vais écrire et j'en retire tout ce qui est inutile... Ou supposé tel.
    Ici, j'avais retiré l'appel au script de configuration, qui contient mon autoloader.

    Du coup, impossible d'instancier mes classes, ce qui a conduit à l'erreur qui me rendait chèvre.

    Merci pour votre aide.

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    @cavo789 : du PHP compilé ? C'est nouveau ?

    Tu proposes $id = (int) $_POST['id'];. Ca serait pas plutôt $id = (int) $id; ?

  11. #11
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Salut

    Du code compilé et oui. C'est le opcode.

    Pour le code php proposé, il est parfaitement juste. Ton code aussi mais ce que je propose sur une ligne tu le fais sur deux.

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

Discussions similaires

  1. Problème pour récupérer valeur dans une classe
    Par Jb_One73 dans le forum Débuter avec Java
    Réponses: 17
    Dernier message: 14/04/2016, 10h24
  2. récupérer valeur dans une class
    Par members dans le forum Débuter avec Java
    Réponses: 17
    Dernier message: 30/08/2009, 15h10
  3. Réponses: 9
    Dernier message: 26/11/2007, 10h50
  4. Acces aux valeurs dans une classe
    Par Seth77 dans le forum C#
    Réponses: 1
    Dernier message: 12/05/2007, 17h00
  5. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 09h15

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