繁体   English   中英

查看PHP类实例(对象)以查看其所有可用的公共属性和方法的最佳方法是什么?

[英]What is the best way to look inside a PHP class instance (object) to see all of its available public properties and methods?

抱歉,新手问题在这里,但无论如何,

我正在尝试使用Google Data API来处理某些Google Spreadsheets,并且正在尝试使用var_dump查看我从其API调用中接收到的对象的结构。 我尝试使用var_dump,但没有达到预期效果。 它显示给我的大多数属性都显示为受保护,如下所示:

...

["_entryClassName:protected"]
...

我尝试查看如何访问对象属性的示例,以及可以使用属性访问运算符(->)实际访问的属性的示例,我什至没有在var_dump输出中看到它们。

所以,我真的很困惑,我想知道了解类实例的公共属性和方法以及其中有多少个公共方法是最好的方法吗?

感谢您的任何帮助。

我认为您想要PHP的ReflectionClass ,它在运行时返回有关类定义的信息。

例如, getMethods函数接受参数来确定是否应返回有关privateprotectedpublicstatic方法等的信息。尽管如php.net所述,

该功能目前尚未记录。 仅其参数列表可用。

我不确定ReflectionClass文档的其余部分是否足够,但这使我认为您可能需要准备一些破解来实现您想要的目标。

我建议为调试工作使用带有调试器的IDE。

但是,如果您想用困难的方式做到这一点,则可以使用反射,尤其是ReflectionClass ,它具有许多有用的方法:

http://www.php.net/manual/zh/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";
}

参见php手册中的get_class_methods

您可以在Zend框架的API文档中找到正式的API文档(因为它的一部分): http : Zend_Gdata (在Zend_Gdata包中)

附带说明:ZF仅实现访问器方法( get*()set*() ),而不是公共属性。

您可以使用:

  1. get_class_methods()和get_object_vars()函数或
  2. ReflectionClass http://www.php.net/manual/zh/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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM