2015-05-07 64 views
1

有沒有辦法獲得實例化的標準類對象的所有方法?我正在討論一個對象,它有一些方法和屬性,而不是一個新鮮的stdClass對象。 ReflectionClass似乎只適用於課堂。獲取標準類的方法?

+0

您的對象是否有班級,或者沒有班級? (即一些stdClass突變體) – Halcyon

+0

stdClass突變體。 – user151841

回答

1

您可以使用get_object_vars獲得所有屬性的列表,然後在它們之間迭代(或array_filter它們),並確定它們中的哪is_callable

$myClass = new StdClass; 
$myClass->someFunc = function($a) { 
    return $a - 1; 
}; 
$myClass->someProperty = 42; 

$properties = get_object_vars($myClass); 

$methods = array_filter($properties, 'is_callable'); 

我不知道這是否是我的5.4.39版本的PHP與否,但是使用上面的例子,而不是像@Mike那樣做var_dump(get_class_methods($myClass));返回一個空數組。

+0

對,它看起來像get_class_methods()只會返回在生成對象的類中定義的那些對象。 – Mike

2

嘗試get_class_methods(),聽起來像你所描述的,如果我正確理解你的話。

+1

參數被定義爲「類名稱或對象實例」。該頁面上的示例顯示它正在用於這兩個(我用它也只是給它一個對象)。 – Mike

+1

PHP和函數名稱,每次得到我XD ..做一個沒有誤導性的函數名是多麼困難?我們可以得到一個'get_object_methods()'嗎? – Halcyon

+1

是的,完全同意,這可能是誤導。我想起初我在試圖做到這一點時忽略了它,因爲我也這麼認爲。 – Mike