public static function build(MetaClass $class) { $out = self::getHead(); $parent = $class->getParent(); if ($class->hasBuildableParent()) { $parentName = 'Proto' . $parent->getName(); $uses = "{$parent->getProtoNamespace()}\\{$parentName}"; } else { $parentName = 'AbstractProtoClass'; $uses = AbstractProtoClass::class; } $out .= <<<EOT namespace {$class->getAutoProtoNamespace()}; use {$uses}; EOT; $out .= <<<EOT abstract class AutoProto{$class->getName()} extends {$parentName} { EOT; $classDump = self::dumpMetaClass($class); $out .= <<<EOT {$classDump} } EOT; return $out . self::getHeel(); }