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 de syntaxe, champs de classe invisible


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 34
    Par défaut Erreur de syntaxe, champs de classe invisible
    Bonjour,
    j'ai une classe qui me permet de gérer les libellés de mon site. Cette Classe appLang est construite dynamiquement à partir d'un fichier json. Le problème que j'ai c'est qu'après une mise à jour du fichier que j'ai faite aujourd'hui pour ajouter des libellés, tous les libellés ne s'affichent plus. Je vous met le code pour que vous compreniez mieux (je suis pas très fort pour expliquer )
    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
    public static function replace_lbl($matches) {
            $val = trim($matches[0]);
            $valLen = strlen($val) - 2;
            $val = substr($val, 1, $valLen);
     
            $appLang = TranslatorUtils::$siteAppLang;
     
            if (empty($appLang)) {
                $langCode = TranslatorUtils::$currentLangCode;
                $scope = "site";
                $langFile = Config::getBaseUrl() . '/' . $scope . '/client/ressources/lang/lang-' . $langCode . '.json';
                if (TranslatorUtils::url_exists($langFile)) {
                    $appLang = json_decode(file_get_contents($langFile));
                }
                TranslatorUtils::$siteAppLang = $appLang;
            }
            //code ajouté pour débogage
            echo "<p>";
            echo "le tableau est :";
            print_r($appLang);
            echo "clé = ".$val;
            echo "valeur = ".$appLang->$val;
            echo "</p>";
            //fin code ajouté pour débogage
            if (!empty($appLang) && isset($appLang->$val)) {
                return $appLang->$val;
            } else {
                return "";
            }
        }
    comme vous le voyez la variable appLng contient une classe dont les propriétés sont les différents libellés du site et, $val représente le libellé que je recherche (construit dynamiquement à partir de $matches qui lui vient d'ailleur). Alors après débogage je constate que, bien que les libellés soient présents dans la classe, isset renvois false. Et lorsque j'essais d'accéder directement au libellé (dans le code du débogage) j'ai l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Undefined property: stdClass::$lblView
    Dans laquelle lblView est le libellé recherché. Vous pouvez le constater sur la capture d'écran suivante:
    Nom : Capture.PNG
Affichages : 189
Taille : 215,8 Ko
    Je sollicite votre aide pour comprendre se qui se passe ( ) et comment corriger cette erreur car pour le moment je ne comprend pas. Bien entendu, s'il y a des imcompréhension et besoin de plus de données sur le problème je suis pret àles fournir. Merci de votre aide à tous.

  2. #2
    Inactif
    Homme Profil pro
    Sans emploi
    Inscrit en
    Septembre 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Septembre 2014
    Messages : 35
    Par défaut
    ndefined property: stdClass::$lblView
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $class1 = new stdClass
     
    //puis utilise ces fonction
    $class1::<function>;
    où à partir de cette class et function il y a une erreur de code

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 34
    Par défaut
    merci de ta réponse mai je ne comprend pas très bien tes explications

  4. #4
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je ne vois pas trop pourquoi ça te marche pas
    A titre indicatif, est-ce que si tu essayes avec $appLang->{$val} ça change quelque chose ?

    Au passage, pour ce genre de debug, utiliser des balises <pre></pre> autour de l'objet le rend beaucoup plus lisible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo '<pre>'.print_r($appLang, true).'</pre>';
    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]

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 34
    Par défaut
    J'ai trouvé la raison de se problème. Une erreur humaine. La personne chargée de mettre à jour les fichiers de langues qui permettent de construire l'objet appLang a (je ne sais comment) ajouté un espace après chaque libbellé. Résultat se n'est plus la même chose. Ce truc a faillit me rendre fou. Merci pour vos aides.

    Au passage, pour ce genre de debug, utiliser des balises <pre></pre> autour de l'objet le rend beaucoup plus lisible
    c'est vrai désolé j'étais déjà super à cran après un centième print_r.
    Encore merci à tous.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/11/2010, 23h23
  2. [WD-2003] Erreur de syntaxe avec Champs imbriqués contenant Date
    Par turdel dans le forum VBA Word
    Réponses: 7
    Dernier message: 13/06/2009, 12h34
  3. [POO] erreur de syntaxe dans une classe
    Par ChronoTiger dans le forum Langage
    Réponses: 1
    Dernier message: 05/01/2009, 19h40
  4. [POO] Erreur de syntaxe avec une classe
    Par sirbaldur dans le forum Langage
    Réponses: 5
    Dernier message: 10/01/2007, 13h30
  5. [Conception] Erreur de syntaxe avec un champ de tableau
    Par lodan dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/09/2006, 11h45

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