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 :

[POO] Interdire la déclaration de variable membre dynamique


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de raoulchatigre
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2004
    Messages : 99
    Par défaut [POO] Interdire la déclaration de variable membre dynamique
    Bonjour à tous,

    Un petit exemple ?

    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
    <?php
    error_reporting (E_ALL | E_STRICT );
     
    class lapin
    {
        private $carottePreferee = "aucune";
     
        public function __construct($_carottePreferee = "vide")
        {
            $this->carottesPreferees = $_carottePreferee;
        }
     
        public function quelleEstTaCarottPreferee()
        {
            echo( "Ma carotte preferee est : ".$this->carottePreferee ."<br/>");
        }
     
     
    }
     
    $bugsBunny = new lapin("Celle du voisin !");
    $bugsBunny->quelleEstTaCarottPreferee();
     
    echo("Alors que : ma carotte preferee est : ".$bugsBunny->carottesPreferees);
    ?>


    L'explication : j'ai fait une erreur de frappe en tapant
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->carottesPreferees = $_carottePreferee;
    au lieu de
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->carottePreferee = $_carottePreferee;


    C'est peut être un comportement normal de php, mais j'aimerais personellement qu'il m'alerte lorsque je déclare une variable qui n'a pas été déclaré au préalable.

    Est-ce possible ?

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bonjour

    Actuellement, tu n'affiches pas toutes les erreurs. E_ALL &~E_NOTICE signifie toutes les erreurs sauf les notices. Or il me semble que ce que tu essayes d'obtenir est jsutement une notice
    Essaye de mettre error_reporting à E_ALL simplement.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre confirmé Avatar de raoulchatigre
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2004
    Messages : 99
    Par défaut
    Au temps pour moi :
    J'ai pris la mauvaise ligne...
    Le comportement est le même avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error_reporting (E_ALL | E_STRICT );
    En debut de code...

  4. #4
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Par défaut
    tu veux dire que si l'attribut n'existe pas, il n'y a pas de warning à l'appel?
    C'est un langage à typage faible, ce comportement est donc normal.
    C'est pour ça que dans easyEclipse il surligne les variable similaire, effectivement c'est un problème et la question reste entière ?

  5. #5
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 684
    Par défaut
    tu peux ôter "aucune" dans la déclaration de l'attribut, comme ça tu auras au moins une erreur E_NOTICE au moment de la lecture dans la méthode "quelleEstTaCarottPreferee"

  6. #6
    Membre confirmé Avatar de raoulchatigre
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2004
    Messages : 99
    Par défaut
    Citation Envoyé par mathieu Voir le message
    tu peux ôter "aucune" dans la déclaration de l'attribut, comme ça tu auras au moins une erreur E_NOTICE au moment de la lecture dans la méthode "quelleEstTaCarottPreferee"
    Certes, mais ce n'est pas là mon problème, mon problème est que $this->carottesPreferees est déclarée silencieusement. Je conçois que ce fonctionnement existe en local, mais lors de l'accès à une propriété d'un objet, cela me gêne un peu plus.

    Je prends mon camarade développeur qui a codé une classe entière en déclarant ses variable à la volée dans le constructeur.
    Elles deviennent introuvable avec phpeclipse, elles sont forcément en public, etc... Bref pas d'erreur mais c'est particulièrement désagréable je trouve.

    Citation Envoyé par artotal Voir le message
    tu veux dire que si l'attribut n'existe pas, il n'y a pas de warning à l'appel?
    C'est un langage à typage faible, ce comportement est donc normal.
    C'est pour ça que dans easyEclipse il surligne les variable similaire, effectivement c'est un problème et la question reste entière ?
    J'utilise Eclipse avec PhpEclipse, je ne connais pas EasyEclipse mais cette fonctionnalité est effectivement intéressante.
    Sinon je ne vois pas vraiment ce que le typage a à voir là dedans, sauf si "typage faible" implique le fait de "déclaration silencieuse".
    (Je parle en des termes créés par moi-même : traducteurs-traduisez )

    Je peux toujours me faire une recherche sur tous les $this-> me dirais-vous.
    Oui sans doute, mais ne le dites pas J'ENTENDS RIEN DE TOUTE FACON LALALA !!

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

Discussions similaires

  1. [PHP 5.3] [POO] déclaration de variable
    Par Drannor dans le forum Langage
    Réponses: 3
    Dernier message: 12/01/2009, 15h48
  2. Déclaration de variable dynamiquement sous pl/sql
    Par madina dans le forum PL/SQL
    Réponses: 6
    Dernier message: 07/05/2008, 18h12
  3. [POO] Définition des variables membre static
    Par AurélienB dans le forum Langage
    Réponses: 13
    Dernier message: 18/02/2008, 11h39
  4. [POO] Déclaration dynamique de variable membre
    Par fredrik dans le forum Langage
    Réponses: 10
    Dernier message: 01/09/2006, 08h12
  5. [POO] Classe abstraite PHP5 et variables membres
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 07/06/2006, 01h27

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