簡體   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