Ich bin mir sicher, dass diese Frage auf andere komplexe Objekttypen zutrifft, aber EntityDrupalWrapper
ich arbeite gerade damit. Dies ist der Objekttyp, den entity_metadata_wrapper()
(und wahrscheinlich auch andere) zurückgeben.
Wenn Sie Code wie den folgenden verwenden:
$order_wrapper = entity_metadata_wrapper('commerce_order', $order_object);
dpm($order_wrapper);
Die Ausgabe von Devel ist nicht allzu hilfreich:
Es wird nicht angezeigt, was Sie erwarten, wenn Sie dpm()
beispielsweise ein stdClass
Objekt aufrufen .
Ein ähnlicher Aufruf von dvm()
gibt das Objekt aus, ist aber in einer Weise, die ich nicht kenne, und nicht sehr lesbar.
Ich habe es versucht debug()
und es erzeugt einen PHP-Benutzerhinweis, der ungefähr so aussieht:
Übrigens ist die in dieser Warnung enthaltene HTML-Ausgabe dieselbe Ausgabe, die dvm()
auf dem Bildschirm ausgegeben wird .
Wie kann ich diese Art von Objekten (vorzugsweise mit Krumo) untersuchen, um festzustellen, welche Eigenschaften verfügbar sind? Oder stecke ich fest mit dvm()
?
__get()
und__set()
war involviert. Haben Sie aus Interesse eine bevorzugte Möglichkeit, herauszufinden, welche Klasseneigenschaften für welchen Wrapper verfügbar sind? Oder geht es nur darum, aus Erfahrung zu wissen?dpm($wrapper->getPropertyInfo());
, es hilft wirklichAntworten:
Verwenden Sie dpm ($ wrapper-> getPropertyInfo ());
Es ist in den Dokumenten .
quelle
kpr($wrapper->my_custom_field->value());
Ich hatte mit EntityDrupalWrapper-Objekten gespielt. debug () gibt normalerweise die Ausgabe zurück, die möglicherweise von __toString () vorbereitet wurde.
Ich habe das EntityDrupalWrapper-Objekt mit foreach iteriert und dabei geholfen, den Namen der Eigenschaften aufzulisten.
Hier
$obj
ist ein Objekt vom TypEntityValueWrapper
$ obj kann von $ obj-> value () gelesen und von $ obj-> set ('value') geschrieben werden;
BEARBEITEN:
Wenn Sie Ihren Wrapper ohne Übergabe eines zweiten Parameters erstellt haben, z.
B. entity_metadata_wrapper ('commerce_order');
Dann lösen set- und value-Methoden eine Ausnahme aus, da sie nicht implementiert sind.
quelle
Ich habe mein eigenes kleines Widget geschrieben, um den Wrapper abzurollen:
Hoffe, jemand findet es nützlich.
quelle
Das Inspect- Modul bietet eine schöne strukturelle Ansicht der Daten, die Sie debuggen möchten.
quelle
Wenn Sie das ursprüngliche Objekt untersuchen möchten, das den Wrapper "antreibt", versuchen Sie Folgendes:
Das funktioniert gut für mich.
quelle
Es gibt einen Entwicklungs-Patch, mit dem Krumo alle privaten und geschützten Eigenschaften anzeigen kann.
Hier ist der Thread auf drupal.org
Ich fand diesen Patch sehr hilfreich.
quelle
Verwenden Sie das Drupal-CLI
quelle