2015-05-07 2 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 или нет, но используя приведенный выше пример и вместо этого делаю var_dump(get_class_methods($myClass));, поскольку предлагаемый @Mike возвращает пустой массив.

+0

Правильно, похоже, что get_class_methods() возвращает только те, которые определены в классе (классах), из которого генерируется объект. – Mike

2

Попробуйте get_class_methods(), кажется, что вы описываете, если я правильно вас понимаю.

+1

Аргумент определяется как «Имя класса или экземпляр объекта». Пример на странице показывает, что он используется для обоих (я использовал его, просто предоставив ему объект). – Mike

+1

PHP и имена функций, получает меня каждый раз XD .. как сложно сделать имя функции, которое не вводит в заблуждение? Можем ли мы получить 'get_object_methods()'? – Halcyon

+1

Да, полностью согласен, это может ввести в заблуждение. Я думаю, что сначала я прошел через это, пытаясь это сделать, потому что я думал то же самое. – Mike