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] Interpréter une chaine


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut [POO] Interpréter une chaine
    Bonjour je vais faire court, je viens d'implementer un objet qui a pour but de sortir un tableau avec navigation à partir d'un tableau d'objets (un peu comme les displayTag en Java).
    Je passe donc a ma méthode un tableau d'objets, et un tableau ou se trouve les informations du décorateur (balise, méthode a appelé dans chaque cellule etc...)

    Mon probleme c'est que cela m'affiche la synthaxe dans chaque cellules:

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <table>
    //$objet est la variable dans laquelle un foreach place l'objet
    <tr>
      <td>$objet->getId();<td>
      <td>$objet->getName();<td>
    </tr>
    <tr>
      <td>$objet->getId();<td>
      <td>$objet->getName();<td>
    </tr>
    </table>
    En somme il me retourne la synthaxe mais ne l'interprete pas...
    Quelqu'un à une astuce?

  2. #2
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    salut, tu peux donner un bout de code ?

    et puis dans la volé un petit affichage de ce que tu as et ensuite de ce que tu voudrais. ça fait pas "court" mais c'est plus simple et plus rapide pour nous

  3. #3
    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 : 39
    Localisation : France

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

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

    Tu ne peux pas mélanger le code php et le code html : soit tu "cites" le code html dans un echo à l'intérieur des balises <?php ?>, soit tu ouvres et tu fermes les balises pour isoler le code php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     echo '<tr>
      <td>'.$objet->getId().'<td>
      <td>'.$objet->getName().'<td>
    </tr>' ;
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <tr>
      <td><?php $objet->getId(); ?><td>
      <td><?php $objet->getName(); ?><td>
    </tr>

  4. #4
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Woow

    j'ai même pas vu

    à moins que cela ne soit un oublie sur le forum ?

  5. #5
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut Le code plus tard
    Je vous donnerais le code plus tard je ne l'ai pas sur le poste du boulot.
    pourquoi il n'y'a pas de balise <?php ?> :

    la boucle parcours l'objet de cette manière (attention ce n'est pas le code exact puisque je parcours normalement 2 tableaux un dans lequel se trouve les objets, l'autre dans le quelle se trouve les tag et les méthodes):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $output="<table>";
     
    foreach($tableauObjet as $objet){
      //getId() est une chaine en provenance du tableau comportant $tables et méthodes
      $output.="<tr><td>$object->getId()</td></tr>";
    }
    $output.="</table>";
     
    echo $output;
    ?>

  6. #6
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ah en fait, ce n'est pas le même problème.
    Ce qu'il faut que tu fasses c'est sortir les variables des chaines de caractères pour qu'elles soient interprétées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $output.="<tr><td>".$object->getId()."</td></tr>";

  7. #7
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut si seulement
    en fait le probleme c'est que la partie est un string qui provient d'un tableau...
    Vois tu ce que j'essaye de faire?

  8. #8
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    tu veux dire que tu as deux boucles imbriquées ? et qu'en fait ce que tu écris ce n'est pas $objet->getId() mais quelque chose du genre $objet.$tab[1] ?
    Chuis pas sûre que ce soit possible... peut-être avec des variables dynamiques, mais j'en doute

  9. #9
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut
    c'est exactement ca, enfin bon si ce n'est pas possible je vais faire en sorte que tout mes objet qui veulent etre publiés par ma classe d'affichage implemente un méthode toArray() qui retournera un tableau associatif de valeur de l'objet et bon dans ce cas ca sera plus simple...

    Sinon il existe pas une fonction ou méthode en php genre execString() ou un truc du genre? ca serait puissant!

    Sinon est ce qu'il y a moyen de tester si une classe implèmente bien une méthode?
    histoire que je puisse éléver une erreure si la méthode toArray() n'existe pas dans l'objet...

  10. #10
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Citation Envoyé par chriscoolletoubibe Voir le message
    Sinon il existe pas une fonction ou méthode en php genre execString() ou un truc du genre? ca serait puissant!
    eval() ?

    http://fr.php.net/manual/fr/function.eval.php

  11. #11
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut Merci!
    C'est cool!
    Je savais pas qu'elle existait aussi en php, j'ai même pas penser a regarder!
    Je pense que je devrais pouvoir regler mon problème grace à elle!

    Merci beaucoup!!!

  12. #12
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut
    En fait eval() ne marche pas cependant la fonction php call_user_func()
    fait l'affaire

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

Discussions similaires

  1. Interpréter une chaine de caractères
    Par carnifex dans le forum Struts 1
    Réponses: 2
    Dernier message: 07/01/2009, 00h36
  2. [Débutant] Interpréter une chaine de caractères sans eval
    Par Uragiru dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 02/05/2008, 14h42
  3. [vb.net] interpréter une chaine comme du Code
    Par ricil78 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 24/11/2006, 20h04
  4. [PL/SQL] interprétation d'une chaine de caractère
    Par bj_jet dans le forum Oracle
    Réponses: 7
    Dernier message: 29/01/2006, 21h57
  5. Réponses: 5
    Dernier message: 22/09/2005, 10h34

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