Je suis sûr que cette question s'applique à d'autres types d'objets complexes, mais EntityDrupalWrapper
c'est celui avec lequel je travaille actuellement. C'est le type d'objet retourné par entity_metadata_wrapper()
(et probablement d'autres).
Lorsque vous utilisez un code comme celui-ci:
$order_wrapper = entity_metadata_wrapper('commerce_order', $order_object);
dpm($order_wrapper);
la sortie de Devel n'est pas très utile:
Il ne montre pas ce que vous attendez de voir pour un appel dpm()
avec, par exemple, un stdClass
objet.
Un appel similaire à dvm()
imprimer l'objet, mais d'une manière que je ne connais pas, et ce n'est pas très lisible.
J'ai essayé debug()
et cela génère une notice utilisateur PHP qui ressemble à ceci:
Incidemment, la sortie HTML contenue dans cet avertissement est la même que celle dvm()
imprimée à l'écran.
Comment puis-je inspecter ces types d'objets (de préférence avec Krumo) afin de voir quelles propriétés sont disponibles? Ou suis-je coincé en utilisant dvm()
?
__get()
et__set()
étaient impliqués. Si vous êtes intéressé, avez-vous un moyen privilégié de déterminer quelles propriétés de classe sont disponibles pour quel wrapper? Ou est-ce juste une question de "savoir" basée sur l'expérience?dpm($wrapper->getPropertyInfo());
, cela aide vraiment les chosesRéponses:
Utilisez dpm ($ wrapper-> getPropertyInfo ());
C'est dans la documentation .
la source
kpr($wrapper->my_custom_field->value());
Je jouais avec des objets EntityDrupalWrapper. debug () retourne généralement le résultat que __toString () aurait préparé
J'ai itéré l'objet EntityDrupalWrapper à l'aide de foreach et cela a aidé à répertorier le nom des propriétés.
Voici
$obj
un objet de typeEntityValueWrapper
$ obj peut être lu par $ obj-> value () et peut être écrit par $ obj-> set ('value');
MODIFIER:
Si vous avez créé votre wrapper sans passer le second
paramètre, c’est-à-dire entity_metadata_wrapper ('commerce_order');
alors, les méthodes set et value lèveront une exception car elles ne sont pas implémentées.
la source
J'ai fini par écrire mon propre petit widget pour dérouler le wrapper:
J'espère que quelqu'un le trouvera utile.
la source
Le module Inspect fournit une vue structurelle intéressante des données que vous souhaitez déboguer.
la source
Si vous souhaitez inspecter l'objet d'origine qui "alimente" le wrapper, essayez:
Cela fonctionne bien pour moi.
la source
Un correctif de développement permet à Krumo d'afficher toutes les propriétés privées et protégées.
Voici le fil sur drupal.org
J'ai trouvé ce patch très utile.
la source
Utilisez le Drupal Cli
la source