Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查看PHP类实例(对象)内部以查看其所有可用公共属性和方法的最佳方式是什么?_Php_Oop_Debugging_Object_Reflection - Fatal编程技术网

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

查看PHP类实例(对象)内部以查看其所有可用公共属性和方法的最佳方式是什么?,php,oop,debugging,object,reflection,Php,Oop,Debugging,Object,Reflection,对不起,这里是新手问题,但不管怎样 我正在尝试使用Google Data API来处理一些Google电子表格,并且我正在尝试使用var_dump来查看从其API调用接收到的对象的结构。我试着使用var_dump,但它并没有给我期望的结果。它显示的大多数属性显示为受保护,如下所示: ... ["_entryClassName:protected"] ... 我试着看一下如何访问对象属性的例子,以及我可以通过属性访问操作符->访问的属性,我甚至在var_dump输出中看不到它们 所以,我真的很

对不起,这里是新手问题,但不管怎样

我正在尝试使用Google Data API来处理一些Google电子表格,并且我正在尝试使用var_dump来查看从其API调用接收到的对象的结构。我试着使用var_dump,但它并没有给我期望的结果。它显示的大多数属性显示为受保护,如下所示:

...

["_entryClassName:protected"]
...
我试着看一下如何访问对象属性的例子,以及我可以通过属性访问操作符->访问的属性,我甚至在var_dump输出中看不到它们

所以,我真的很困惑,我想知道什么是了解我的类实例的公共属性和方法以及它们有多少的最好方法


提前感谢您的帮助。

我建议使用带有调试器的IDE来完成这项工作

但是,如果您想以艰难的方式完成,可以使用reflection,尤其是ReflectionClass,它有许多有用的方法:

例如:

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

我建议使用带有调试器的IDE来完成这项工作

但是,如果您想以艰难的方式完成,可以使用reflection,尤其是ReflectionClass,它有许多有用的方法:

例如:

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

您可以在Zend框架的API文档中找到官方API文档,因为它是Zend框架的一部分:在Zend_Gdata包中


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

您可以在Zend框架的API文档中找到官方API文档,因为它是Zend框架的一部分:在包Zend_Gdata中

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

请参阅php手册。

请参阅php手册。

我认为您需要php,它在运行时返回类定义的信息

例如,该函数接受参数,以确定是否应返回有关私有、受保护、公共、静态方法等的信息

此功能当前不可用 文件化;只有它的参数列表是 可用

我不确定ReflectionClass文档的其余部分有多满,但这让我认为您可能需要准备一些黑客攻击,以实现您想要的功能。

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

例如,该函数接受参数,以确定是否应返回有关私有、受保护、公共、静态方法等的信息

此功能当前不可用 文件化;只有它的参数列表是 可用

我不确定ReflectionClass文档的其余部分有多满,但这让我认为您可能需要准备进行一些黑客攻击,以实现您想要的目标。

您可以使用:

获取类方法和对象变量函数或 反射类 请参见第一种方法的示例:

<?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));
您可以使用:

获取类方法和对象变量函数或 反射类 请参见第一种方法的示例:

<?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));