Извините, новичок вопрос здесь, но в любом случае,
Я пытаюсь использовать API данных Google для работы с некоторыми таблицами Google, и я пытаюсь использовать var_dump, чтобы посмотреть на структуру объектов, которые получаю от его вызовов API. Я пытался использовать var_dump, но это не дает мне то, что я ожидаю. Большинство свойств, которые он показывает мне, выглядят так же защищенными:
... ["_entryClassName:protected"] ...
и я попытался взглянуть на примеры того, как обращаются к свойствам объектов и для свойств, которые я могу получить с помощью оператора доступа к свойствам (->), я даже не вижу их в выводе var_dump.
Итак, я действительно смущен, и мне было интересно, как мне лучше узнать, какие общедоступные свойства и методы моего экземпляра класса и сколько из них есть?
Спасибо за любую помощь заранее.
Я думаю, вы хотите, чтобы ReflectionClass PHP возвращал информацию о определении класса во время выполнения.
Например, функция getMethods принимает параметры для определения того, должна ли она возвращать информацию о private
, protected
, public
, static
методах и т. Д. Хотя, как говорится на php.net,
Эта функция в настоящее время не документирована; доступен только список его аргументов.
Я не уверен, насколько полная остальная часть документации ReflectionClass
, но это заставляет меня думать, что вы, возможно, захотите подготовиться к взлому, чтобы достичь именно того, что вы хотите.
Я бы предложил использовать IDE с отладчиком для этой работы.
Однако, если вы хотите сделать это сложным способом, вы можете использовать отражение, и особенно ReflectionClass
который имеет ряд полезных методов:
http://www.php.net/manual/en/class.reflectionclass.php
Пример:
$c = new ReflectionClass( get_class($myObject) ); $properties = $c->getProperties( ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED ); foreach ($properties as $property) { echo $property->getName() . "\n"; }
Официальную документацию API вы можете найти в документации API Zend Framework (из-за ее части): http://framework.zend.com/apidoc/core/ (в пакете Zend_Gdata
)
В качестве побочного элемента: ZF реализует только методы доступа ( get*()
и set*()
) вместо общедоступных свойств.
См. Get_class_methods в руководстве по php.
Вы можете использовать:
См. Пример с первым методом:
<?php class Test { public $public_property = 'public_property'; protected $protected_property = 'protected_property'; private $private_property = 'private_property'; public function public_method() {} protected function protected_method() {} private function private_method() {} } $instance = new Test(); // Show public methods print_r(get_class_methods($instance)); // Show public properties print_r(get_object_vars($instance));