¿Cuál es la mejor manera de mirar dentro de una instancia de clase PHP (objeto) para ver todas sus propiedades y métodos públicos disponibles?

Lo siento, pregunta de novato aquí, pero de todos modos,

Intento utilizar la API de datos de Google para trabajar con algunas hojas de cálculo de Google y estoy intentando usar var_dump para ver la estructura de los objetos que recibo de sus llamadas a la API. Intenté usar var_dump pero no me está dando lo que esperaba. La mayoría de las propiedades que me muestra aparecen protegidas así:

... ["_entryClassName:protected"] ... 

y he intentado buscar ejemplos de cómo se accede a las propiedades de los objetos y de las propiedades a las que puedo acceder con el operador de acceso a la propiedad (->). Ni siquiera las veo en el resultado var_dump.

Entonces, estoy realmente confundido y me pregunto cuál es la mejor manera para que sepa cuáles son las propiedades y los métodos públicos de mi instancia de clase y cuántos de ellos hay.

Gracias por cualquier ayuda de antemano.

Creo que quieres ReflectionClass de PHP que devuelve información sobre una definición de clase en tiempo de ejecución.

La función getMethods , por ejemplo, acepta parámetros para determinar si debe devolver información sobre métodos private , protected , public , static , etc. Aunque como dice en php.net,

Esta función actualmente no está documentada; solo su lista de argumentos está disponible.

No estoy seguro de cuán completo está el rest de la documentación de ReflectionClass , pero esto me hace pensar que es posible que desee prepararse para un poco de pirateo para lograr exactamente lo que quiere.

Sugeriría usar un IDE con un depurador para este trabajo.

Sin embargo, si quieres hacerlo de la manera difícil, puedes usar la reflexión, y especialmente la ReflectionClass que tiene una cantidad de métodos útiles:

http://www.php.net/manual/en/class.reflectionclass.php

Ejemplo:

 $c = new ReflectionClass( get_class($myObject) ); $properties = $c->getProperties( ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED ); foreach ($properties as $property) { echo $property->getName() . "\n"; } 

Puede encontrar la documentación oficial de la API dentro de la documentación de API de Zend Framework (porque es parte de ella): http://framework.zend.com/apidoc/core/ (en el paquete Zend_Gdata )

Como nota al margen: ZF solo implementa métodos de acceso ( get*() y set*() ) en lugar de propiedades públicas.

Ver get_class_methods en el manual php.

Puedes usar:

  1. get_class_methods () y get_object_vars () funciones o
  2. ReflectionClass http://www.php.net/manual/en/class.reflectionclass.php

Ver ejemplo con el primer método: