protected function getDeclaringClass(\reflectionMethod $method) { $declaringClass = $method->getDeclaringClass(); $traits = $this->adapter->method_exists($declaringClass, 'getTraits') === false ? array() : $declaringClass->getTraits(); if (sizeof($traits) > 0) { $methodFileName = $method->getFileName(); if ($methodFileName !== $declaringClass->getFileName() || $method->getStartLine() < $declaringClass->getStartLine() || $method->getEndLine() > $declaringClass->getEndLine()) { if (sizeof($traits) > 0) { $methodName = $method->getName(); foreach ($traits as $trait) { if ($methodFileName === $trait->getFileName() && $trait->hasMethod($methodName) === true) { return $trait; } } } } } return $declaringClass; }