7
votes

PHP - Propriétés d'objet Access sans la sensibilité de cas?

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?

Par exemple, j'ai un objet appelé CourmentUser avec le nom d'attribut.

existe-t-il un moyen de récupérer cette valeur comme celle-ci? xxx

tout conseil apprécié.

Merci.


1 commentaires

Partiellement. Il y a aussi beaucoup d'incohérences dans les noms de champ de base de données, qui compliquent davantage les questions.


4 Réponses :


4
votes

Eh bien, vous pouvez écrire un __ obtenir une fonction à chacune de vos classes qui géreraient une telle conversion, mais c'est assez hacky. Quelque chose comme cela pourrait fonctionner: xxx

maintenant, vous pouvez le faire: xxx

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: xxx

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.


2 commentaires

+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.



0
votes

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 ).


0 commentaires

4
votes

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. XXX


0 commentaires

2
votes

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 , puis utilisez array_change_key_case 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. xxx


1 commentaires

J'adore que cela utilise une fonction PHP natif!