}
for (TypeReference interf : interfaces) {
if (interf instanceof FullyQualifiedReference) {
FullyQualifiedReference fqr = (FullyQualifiedReference) interf;
String name = null;
// we have a namespace
if (fqr.getNamespace() != null) {
name = fqr.getNamespace().getName() + BACK_SLASH + fqr.getName();
} else {
IEvaluatedType eval = PHPTypeInferenceUtils.resolveExpression(sourceModule, fqr);
name = eval.getTypeName();
if (eval.getTypeName().startsWith(BACK_SLASH)) {
name = eval.getTypeName().replaceFirst("\\\\", "");
}
}
if (name == null) {
continue;
}
IType[] types;
if (PDTModelUtils.findType(sourceModule, name) != null) {
types = new IType[] {PDTModelUtils.findType(sourceModule, name)};
} else {
types = model.findTypes(name, MatchRule.EXACT, 0, 0, scope, new NullProgressMonitor());
}
if (types.length != 1) {
continue;
}
IType type = types[0];
try {
for (IMethod method : type.getMethods()) {
boolean implemented = false;
String methodSignature = PDTModelUtils.getMethodSignature(method);
if (methodSignature == null) {
continue;
}
IMethod[] ms = PHPModelUtils.getTypeMethod(classType, method.getElementName(), true);
for (IMethod me : ms) {
if (me.getParent().getElementName().equals(fqr.getName())) {
continue;
}
if (!PHPFlags.isAbstract(me.getFlags())) {
implemented = true;
}