protected function compileClass(Op\Stmt\Class_ $class)
{
$classId = count($this->state->classEntries) + 1;
$name = explode("\\", $class->name->value);
$className = array_pop($name);
$ns = implode("\\", $name);
$props = [];
foreach ($class->stmts->children as $stmt) {
switch ($stmt->getType()) {
case 'Stmt_Property':
$props[] = ["name" => $stmt->name->value, "default" => $stmt->defaultVar, "ctype" => $this->mapToCType($stmt->type), "typeInfo" => $this->getTypeInfo($this->mapToCType($stmt->type))];
break;
default:
throw new \LogicException("Unknown class statment type: " . $stmt->getType());
}
}
$this->state->classEntries[] = ["name" => $className, "ns" => $ns, "id" => $classId, "methods" => [], "properties" => $props];
}