33
44use PHPJava \Core \JavaClass ;
55use PHPJava \Core \JVM \ConstantPool ;
6+ use PHPJava \Core \JVM \FlexibleMethod ;
67use PHPJava \Imitation \java \lang \_Object ;
78
89class SuperClassResolver
@@ -25,22 +26,18 @@ public function resolveMethod($methodName, JavaClass $class)
2526 }
2627 return $ this ->resolveMethod ($ methodName , $ class ->getSuperClass ());
2728 }
28- // TODO: Will implement extends imitation classes
29- // elseif (!($class->getSuperClass() instanceof _Object)) {
30- // $this->classes = array_merge($this->classes, array_map(
31- // function ($method) use ($class) {
32- // return static::convertToCallable($method, $class->getSuperClass());
33- // },
34- // (new \ReflectionClass($class->getSuperClass()))->getMethods()
35- // ));
36- // return $this->resolveAll($class->getSuperClass());
37- // }
38- // $this->classes = array_merge($this->classes, array_map(
39- // function ($method) use ($class) {
40- // return static::convertToCallable($method, $class->getSuperClass());
41- // },
42- // (new \ReflectionClass($class->getSuperClass()))->getMethods()
43- // ));
44- return $ this ->classes ;
29+
30+ $ prependItems = [];
31+ foreach ((new \ReflectionClass ($ class ->getSuperClass ()))->getMethods () as $ callee ) {
32+ $ resolvedMethodName = $ callee ->getName ();
33+ if (!isset ($ prependItems [$ resolvedMethodName ])) {
34+ $ prependItems [$ resolvedMethodName ] = [];
35+ }
36+ $ prependItems [$ resolvedMethodName ] = array_merge (
37+ $ prependItems [$ resolvedMethodName ],
38+ [new FlexibleMethod ($ callee )]
39+ );
40+ }
41+ return array_merge ($ prependItems , $ this ->classes );
4542 }
4643}
0 commit comments