Accéder à l'attribut d'un objet contenant un tiret.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Accéder à l'attribut d'un objet contenant un tiret.

par Melfith » 12 sept. 2007, 15:43

Salut,

Je suis tombé sur le même problème de syntaxe. J'ai beaucoup galéré mais j'ai trouvé la solution :D

Le sujet date, ms je met quand même la solution, ca pourrait aider quelques uns.

Pour accéder à l'attribut d'un objet contenant un tiret

Il suffit de faire echo $objet->{'titre-page'};

Et s'il existe plusieurs attributs :

echo $objet->{'titre-page'}[0]->{'sous-titre-page'};

Voila en espérant avoir aider les désespérés!!

Enjoy it!!

par Discret » 01 janv. 2006, 20:28

En fait, la classe n'a pas été écrite dans un fichier php. J'ai modifié l'exemple ici pour simplifier le problème.

Il s'agit d'une classe simplexml chargé depuis un fichier xml dont certaines balises contiennent un tiret dans leur nom.

par Ultiny » 01 janv. 2006, 13:34

Dans ce cas, en début de fichier, placer:
error_reporting(E_ALL);

par zeus » 01 janv. 2006, 13:28

Je me suis dit la même chose mais je viens de me dire (malgrès les 2gr qui me restent dans le sang) que c'est peut être le ERROR_REPORTING qui n'affiche pas les warning ...

par solo » 01 janv. 2006, 13:23

Lu,

Je rejoins zeus, c'est un problème de conception. Mais comment PHP ne peut-il pas t'envoyer un gros message d'erreur au niveau de la déclaration de la propriété?

par zeus » 01 janv. 2006, 13:18

ça m'étonne beaucoup que personne ne l'ai vu avant toi parce que c'est hors syntaxe officielle pour les variables qui ne doivent contenir que des caractères alpha et des _

Sinon, essaye
echo $objet->{titre-page};

par Ultiny » 01 janv. 2006, 00:01

Essay de mettre dans un tableau.
Par exemple ce genre de choses:

... = array("titre-page" => "valeur");

$objet->variable["titre-page"]

Mais bon c'est normal d'avoir une erreur car le - vaut le signe "moins" et non pas un tiret texte.

Accéder à l'attribut d'un objet contenant un tiret.

par Discret » 31 déc. 2005, 22:12

Bonjour à tous.

Je dois utiliser une classe que je ne peux pas modifier.

Un attribut public de cette classe est: titre-page
La commande $objet->titre-page ne fonctionne pas.

Pour accéder à l'attribut je dois faire comme ceci:

$titrepage = "titre-page";
echo $objet->$titrepage;

mais ce n'est pas une méthode très pratique ni propre.

J'ai essayé de faire:

echo $objet->"titre-page";
ou
echo $objet->'titre-page';
ou
echo $objet->(titre-page);

mais cela génére une erreur.

Existe-t-il une syntaxe pour accéder à cet élément sans utiliser une variable contenant le nom de l'attribut ?

Merci de votre aide.