<?php
class firstClass {
public function firstMethod() {}
private function secondMethod() {}
}
class secondClass extends firstClass {
public function thirdMethod() {}
private function fourthMethod() {}
}
function check_method($obj, $methodName)
{
$class = new ReflectionClass($obj);
$methods = $class->getMethods();
return [] != array_filter($methods, function($v) use ($methodName, &$obj) { return $v->name === $methodName && $v->class === get_class($obj); });
}
$obj = new secondClass;
$methodName = 'firstMethod';
var_dump(check_method
($obj, $methodName));
PD9waHAKCmNsYXNzIGZpcnN0Q2xhc3MgewoKICAgIHB1YmxpYyBmdW5jdGlvbiBmaXJzdE1ldGhvZCgpIHt9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHNlY29uZE1ldGhvZCgpIHt9Cgp9CgpjbGFzcyBzZWNvbmRDbGFzcyBleHRlbmRzIGZpcnN0Q2xhc3MgewoKICAgIHB1YmxpYyBmdW5jdGlvbiB0aGlyZE1ldGhvZCgpIHt9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGZvdXJ0aE1ldGhvZCgpIHt9Cgp9CgpmdW5jdGlvbiBjaGVja19tZXRob2QoJG9iaiwgJG1ldGhvZE5hbWUpCnsKICAgICRjbGFzcyA9IG5ldyBSZWZsZWN0aW9uQ2xhc3MoJG9iaik7CgkkbWV0aG9kcyA9ICRjbGFzcy0+Z2V0TWV0aG9kcygpOwoJcmV0dXJuIFtdICE9IGFycmF5X2ZpbHRlcigkbWV0aG9kcywgZnVuY3Rpb24oJHYpIHVzZSAoJG1ldGhvZE5hbWUsICYkb2JqKSB7CiAgICAJcmV0dXJuICR2LT5uYW1lID09PSAkbWV0aG9kTmFtZSAmJiAkdi0+Y2xhc3MgPT09IGdldF9jbGFzcygkb2JqKTsKCX0pOwp9Cgokb2JqID0gbmV3IHNlY29uZENsYXNzOwokbWV0aG9kTmFtZSA9ICdmaXJzdE1ldGhvZCc7CnZhcl9kdW1wKGNoZWNrX21ldGhvZCgkb2JqLCAkbWV0aG9kTmFtZSkpOw==