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 :

PhpEcho : comportement étrange de $this [POO]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 PhpEcho : comportement étrange de $this
    Bonsoir,

    comme je pense maîtriser l'utilisation de PhpEcho de rawsrc pour faire un affichage html, je l'utilise. Pourtant, je tombe sur un cas où je ne comprends pas.

    appel de PhpEcho :
    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
    public function testCsvToDb()
    {
        $ret=$this->csvToDb();
     
        $page = new PhpEcho([DIR_ROOT, 'view Layout.php']);
     
        $body = new PhpEcho([DIR_ROOT, 'view testCsvToDb.php'], [
            'ret' => $ret,
            'done'=>$this->Done
        ]);
        $page['body'] = $body;
     
        // on renvoie au navigateur la page assemblée
        echo $page;
    }

    testCsvToDb.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    var_dump($this);
    echo 'done='.$this('Done')."<br/>";
    if ($this('Done'))
        if ($this('ret')) echo "the db is updated<br/>"; else echo "fail<br/>";
    ?>

    ce qui donne :
    affichage provoqué par la ligne 3 de l'appel puis :

    C:\wamp64\www\ticket\view\testCsvToDb.php:2:
    object(vendor\PhpEcho\PhpEcho)[6]
    private 'id' => string 'h058271f9' (length=9)
    private 'vars' =>
    array (size=2)
    'ret' => boolean true
    'done' => int 1
    private 'file' => string 'C:\wamp64\www\ticket\view\testCsvToDb.php' (length=41)
    private 'code' => string '' (length=0)

    done=
    donc selon le var_dump $this('Done') vaut 1 mais est NULL selon le echo. Qu'ai-je mal fait ?

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    purée laurentSc, là c'est carrément un labrador qu'il te faut :
    regarde ce que t'as fait :
    'done' => $this->Done et puis tu fais : if ($this('Done')), tu ne vois pas comme une légère différence ?
    PHP est sensible à la casse

    D'ailleurs, pour le test tu n'as pas besoin d'échapper la valeur, il est préférable de faire comme ça : if ($this['done'])

  3. #3
    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
    Ouh la !

    [EDIT] Je me disais, pour ne pas risquer de se tromper (ça peut arriver ), autant échapper tout le temps, même si ça sert à rien. Qu'en penses-tu ?

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    il y a quand même une différence : si tu échappes tout (même ce qui n'est pas destiné à être affiché), tu risques un jour d'avoir par exemple un bogue assez sournois : suppose que la valeur de ta variable soit 'abc " < >' et qu tu veuilles la comparer à une autre valeur, si tu l'échappes comme si t'allais l'afficher, la valeur renvoyée par PhpEcho sera : 'abc &quot; &lt; &gt;'. Comme tu peux le voir, il y a quand même un risque sur les chaînes de caractères.
    Tant que les valeurs que tu manipules ne sont pas impactées par la fonction htmlspecialchars(), ça passera toujours (même si ça rajoute un traitement php inutile)

    Et pour la labrador ? T'as choisi un nom ?

  5. #5
    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
    Oui, merci pour ton explication.

    Pour le nom du labrador (déjà, on peut prendre une autre "marque"), je demanderai conseil à un jeune aveugle de mon club, qui a de l'expérience en la matière...(et participant aux jeux paralympiques d'hiver à Pyong Chang)

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

Discussions similaires

  1. [Forms6i] Un IF-ELSIF au comportement étrange
    Par lafouine dans le forum Forms
    Réponses: 11
    Dernier message: 13/09/2005, 16h40
  2. Comportement étrange apres une désinstallation
    Par Sunchaser dans le forum Excel
    Réponses: 4
    Dernier message: 06/08/2005, 20h44
  3. comportement étrange d'une jointure ...
    Par amenis dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 10/02/2005, 22h27
  4. [Système][Runtime][Exec] Comportement étrange au lancement de BeSweet
    Par divxdede dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/06/2004, 10h54
  5. Réponses: 2
    Dernier message: 22/09/2003, 12h23

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