使用method_exists,它会检查所有方法,包括父类.
例:
class Toot { function Good() {} } class Tootsie extends Toot { function Bad() {} } function testMethodExists() { // true var_dump(method_exists('Toot','Good')); // false var_dump(method_exists('Toot','Bad')); // true var_dump(method_exists('Tootsie','Good')); // true var_dump(method_exists('Tootsie','Bad')); }
由于v.4.0.5 PHP有
get_parent_class()方法,因此返回父类.所以你可以在没有重新选择的情况下处理它:
原文链接:https://www.f2er.com/php/240110.htmlclass A { function a() { /* ... */} function b() { /* ... */} } class B extends A { function b() { /* ... */} function c() { /* ... */} } function own_method($class_name,$method_name) { if (method_exists($class_name,$method_name)) { $parent_class = get_parent_class($class_name); if ($parent_class !== false) return !method_exists($parent_class,$method_name); return true; } else return false; } var_dump(own_method('B','a')); // false var_dump(own_method('B','b')); // false var_dump(own_method('B','c')); // true