<?php
class Main {
function a() {}
}
class Extended extends Main {
function b() {}
function c() {}
}
class ImprovedReflectionMethod extends ReflectionMethod {
private $reflectedClassName;
public function __construct($class, $name) {
$this->reflectedClassName = $class;
parent::__construct($class, $name);
}
public function isInhereted() {
return $this->class != $this->reflectedClassName;
}
}
$className = 'Extended';
$reflectionMethod = new ImprovedReflectionMethod($className, 'a');
echo 'метод ', $reflectionMethod->isInhereted() ? 'унаследован' : 'реализован', PHP_EOL;
$reflectionMethod = new ImprovedReflectionMethod($className, 'b');
echo 'метод ', $reflectionMethod->isInhereted() ? 'унаследован' : 'реализован', PHP_EOL;
PD9waHAKCmNsYXNzIE1haW4gewoJZnVuY3Rpb24gYSgpIHt9Cn0KCmNsYXNzIEV4dGVuZGVkIGV4dGVuZHMgTWFpbiB7CglmdW5jdGlvbiBiKCkge30KCWZ1bmN0aW9uIGMoKSB7fQp9CgpjbGFzcyBJbXByb3ZlZFJlZmxlY3Rpb25NZXRob2QgZXh0ZW5kcyBSZWZsZWN0aW9uTWV0aG9kIHsKCXByaXZhdGUgJHJlZmxlY3RlZENsYXNzTmFtZTsKCQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjbGFzcywgJG5hbWUpIHsKCQkkdGhpcy0+cmVmbGVjdGVkQ2xhc3NOYW1lID0gJGNsYXNzOwoJCXBhcmVudDo6X19jb25zdHJ1Y3QoJGNsYXNzLCAkbmFtZSk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBpc0luaGVyZXRlZCgpIHsKCQlyZXR1cm4gJHRoaXMtPmNsYXNzICE9ICR0aGlzLT5yZWZsZWN0ZWRDbGFzc05hbWU7Cgl9Cn0KCiRjbGFzc05hbWUgPSAnRXh0ZW5kZWQnOwokcmVmbGVjdGlvbk1ldGhvZCA9IG5ldyBJbXByb3ZlZFJlZmxlY3Rpb25NZXRob2QoJGNsYXNzTmFtZSwgJ2EnKTsKZWNobyAn0LzQtdGC0L7QtCAnLCAkcmVmbGVjdGlvbk1ldGhvZC0+aXNJbmhlcmV0ZWQoKSA/ICfRg9C90LDRgdC70LXQtNC+0LLQsNC9JyA6ICfRgNC10LDQu9C40LfQvtCy0LDQvScsIFBIUF9FT0w7CgokcmVmbGVjdGlvbk1ldGhvZCA9IG5ldyBJbXByb3ZlZFJlZmxlY3Rpb25NZXRob2QoJGNsYXNzTmFtZSwgJ2InKTsKZWNobyAn0LzQtdGC0L7QtCAnLCAkcmVmbGVjdGlvbk1ldGhvZC0+aXNJbmhlcmV0ZWQoKSA/ICfRg9C90LDRgdC70LXQtNC+0LLQsNC9JyA6ICfRgNC10LDQu9C40LfQvtCy0LDQvScsIFBIUF9FT0w7