Есть ли способ получить все методы экземпляра стандартного объекта класса? Я говорю об объекте с некоторыми методами и свойствами, а не о новом объекте stdClass. ReflectionClass
, похоже, работает только на занятиях.Получить методы на стандартном классе?
ответ
Вы можете использовать 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 возвращает пустой массив.
Правильно, похоже, что get_class_methods() возвращает только те, которые определены в классе (классах), из которого генерируется объект. – Mike
Попробуйте get_class_methods(), кажется, что вы описываете, если я правильно вас понимаю.
Аргумент определяется как «Имя класса или экземпляр объекта». Пример на странице показывает, что он используется для обоих (я использовал его, просто предоставив ему объект). – Mike
PHP и имена функций, получает меня каждый раз XD .. как сложно сделать имя функции, которое не вводит в заблуждение? Можем ли мы получить 'get_object_methods()'? – Halcyon
Да, полностью согласен, это может ввести в заблуждение. Я думаю, что сначала я прошел через это, пытаясь это сделать, потому что я думал то же самое. – Mike
Есть ли у вашего объекта класс или он бесклассовый? (т. е. некоторый мутант stdClass) – Halcyon
мутант stdClass. – user151841