Intereting Posts
Почему функция автозаполнения Internet Explorer отключена для всех html-форм на моем веб-сайте? Создание события Facebook для конкретной страницы с помощью FB Graph API codeigniter: почему это происходит, когда i echo base_url () в атрибуте href тега привязки, он повторяет два раза MySQLi обновил готовый оператор, не обновляя базу данных PHP: как автозагрузочные интерфейсы и тезисы Проблема с расширением шифра OpenSSL Symfony2 KnpMenuBundle: активировать элемент меню, даже если его нет в этом меню Ошибка при чтении приветственного пакета чтение файла с правильной кодировкой Получение данных из URL (например, php's $ _GET) для jQuery / Ajax? извлекать субдомен в качестве переменной get Преобразование между часовыми поясами в PHP Как прикрепить изображение к узлу при его создании с помощью node_save ($ node); Как получить общее количество строк запроса GROUP BY? Должны ли мы использовать Pylons или PHP для нашего webapp?

Каков наилучший способ взглянуть на экземпляр (объект) класса PHP, чтобы увидеть все доступные ему публичные свойства и методы?

Извините, новичок вопрос здесь, но в любом случае,

Я пытаюсь использовать 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.

Вы можете использовать:

  1. get_class_methods () и get_object_vars () или
  2. ReflectionClass http://www.php.net/manual/en/class.reflectionclass.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));