Je travaille sur une ancienne application où il y a beaucoup d'incohérence dans les conventions de dénomination utilisées.
existe-t-il un moyen d'accéder aux propriétés d'objet qui ignorent la sensibilité de cas? p>
Par exemple, j'ai un objet appelé CourmentUser avec le nom d'attribut. P>
existe-t-il un moyen de récupérer cette valeur comme celle-ci? p> tout conseil apprécié. P> Merci. P> P>
4 Réponses :
Eh bien, vous pouvez écrire un maintenant, vous pouvez le faire: p> Si vous souhaitez simplifier votre tâche un peu vous pouvez simplifier votre tâche. Demandez à vos classes de base héritantes d'une classe qui fournit cette fonctionnalité. De cette façon, vous n'avez pas à écrire la fonction à chacune de vos classes: p> mais je vous découragerais fortement de prendre cette approche. À long terme, il serait beaucoup plus intelligent de convertir toutes les variables en un schéma de dénomination cohérent. P> P> __ obtenir une fonction code> à chacune de vos classes qui géreraient une telle conversion, mais c'est assez hacky. Quelque chose comme cela pourrait fonctionner:
+1 Comme je voulais suggérer la même chose. Tu m'as battus à ça. J'aurais cependant jeté une exception si la propriété ne se trouve pas du tout.
Merci, je préférerais ne pas avoir à le faire, mais je n'ai pas beaucoup de choix à court terme au moins.
question intéressante. Il y a deux moyens possibles d'atteindre ce que vous voulez. Soit vous pouvez utiliser des produits pour interariser via la matrice ou consulter les fonctionnalités de réflexion PHP ( http://www.php.net/manual/fr/book.reflection.php ). P>
Si vous n'avez aucun contrôle sur l'objet (peut-être que c'est une ligne d'une base de données externe), je recommanderais de connaître les noms appropriés avant d'accéder aux lignes. La fonction ci-dessous n'est pas une opération bon marché, mais seulement la première fois, elle peut rendre votre application plus stable.
Je sais que c'est un ancien post, mais je pensais lancer une autre solution là-bas. J'ai initialement essayé l'approche get_class_vars, mais j'ai décidé de jeter à un tableau code> code>, puis utilisez array_change_key_case code> pour convertir les touches en minuscule. À ce stade, vous pouvez travailler avec le tableau ou convertir à un objet. Je n'ai pas fait de benchmark, mais je traite de petits objets.
J'adore que cela utilise une fonction PHP natif!
Partiellement. Il y a aussi beaucoup d'incohérences dans les noms de champ de base de données, qui compliquent davantage les questions.