Estoy seguro de que esta pregunta se aplica a otros tipos de objetos complejos, pero EntityDrupalWrapper
es con la que estoy trabajando actualmente. Este es el tipo de objeto devuelto por entity_metadata_wrapper()
(y probablemente otros).
Cuando se usa un código como el siguiente:
$order_wrapper = entity_metadata_wrapper('commerce_order', $order_object);
dpm($order_wrapper);
la salida de Devel no es muy útil:
No muestra lo que esperaría ver para una llamada dpm()
con, por ejemplo, un stdClass
objeto.
Una llamada similar a dvm()
imprime el objeto, pero de una manera con la que no estoy familiarizado, y no es muy legible.
Lo he intentado debug()
y produce un aviso de usuario de PHP que se parece a esto:
Por cierto, la salida HTML contenida en esa advertencia es la misma salida que se dvm()
imprime en la pantalla.
¿Cómo puedo inspeccionar este tipo de objetos (preferiblemente con Krumo), para ver qué propiedades están disponibles? ¿O estoy atrapado usando dvm()
?
__get()
y__set()
estaba involucrado. Por interés, ¿tiene alguna forma preferida de averiguar qué propiedades de clase están disponibles para qué envoltorio? ¿O es solo una cuestión de "saber" basado en la experiencia?dpm($wrapper->getPropertyInfo());
, realmente ayuda a las cosasRespuestas:
Use dpm ($ wrapper-> getPropertyInfo ());
Está en los documentos .
fuente
kpr($wrapper->my_custom_field->value());
Había estado jugando con objetos EntityDrupalWrapper. debug () generalmente devuelve el resultado que puede haber preparado por __toString ()
Repetí el objeto EntityDrupalWrapper usando foreach y me ayudó a enumerar el nombre de las propiedades.
Aquí
$obj
hay un objeto de tipoEntityValueWrapper
$ obj se puede leer con $ obj-> value () y se puede escribir con $ obj-> set ('value');
EDITAR:
Si ha creado su contenedor sin pasar el segundo
parámetro, es decir, entity_metadata_wrapper ('commerce_order');
luego los métodos set y value arrojarán excepciones ya que no se implementan.
fuente
Terminé escribiendo mi propio pequeño widget para desenrollar el contenedor:
Espero que alguien lo encuentre útil.
fuente
El módulo Inspeccionar proporciona una buena vista estructural de los datos que desea depurar.
fuente
Si desea inspeccionar el objeto original que "alimenta" el contenedor, intente:
Esto funciona bien para mi.
fuente
Hay un parche de desarrollo que permite a Krumo mostrar todas las propiedades privadas y protegidas.
Aquí está el hilo en drupal.org
Este parche me ha resultado muy útil.
fuente
Usa el drupal cli
fuente