Skip to content

Compiler: Class inheritance (extends) and interfaces #101

@PurHur

Description

@PurHur

Problem

lib/Compiler.php compileClassLike asserts null === $class->extends and empty implements. Interfaces/traits throw Unsupported class type.

Real PHP apps use simple inheritance:

class BaseController { }
class HomeController extends BaseController { }

Goal

Support single inheritance + interface stubs (vtable or dispatch table) on VM first, then JIT.

Tasks

  • Remove asserts; compile extends parent name
  • VM: method lookup with parent chain
  • JIT: emit class metadata + method dispatch (may start with monomorphic calls only)
  • PHPT: child method override + parent call
  • Defer traits/multiple interfaces to follow-up

Acceptance criteria

new HomeController() calls overridden method; parent method callable via parent:: is optional stretch.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions