public static create ( |
||
$schema |
public static function create(DeclareSchema $schema, $baseCollectionClass)
{
$cTemplate = new ClassFile($schema->getBaseCollectionClass());
$cTemplate->addConsts(array('SCHEMA_PROXY_CLASS' => $schema->getSchemaProxyClass(), 'MODEL_CLASS' => $schema->getModelClass(), 'TABLE' => $schema->getTable(), 'READ_SOURCE_ID' => $schema->getReadSourceId(), 'WRITE_SOURCE_ID' => $schema->getWriteSourceId(), 'PRIMARY_KEY' => $schema->primaryKey));
if ($traitClasses = $schema->getCollectionTraitClasses()) {
foreach ($traitClasses as $traitClass) {
$cTemplate->useTrait($traitClass);
}
}
$cTemplate->extendClass('\\' . $baseCollectionClass);
// interfaces
if ($ifs = $schema->getCollectionInterfaces()) {
foreach ($ifs as $iface) {
$cTemplate->implementClass($iface);
}
}
return $cTemplate;
}
public function generateSchema(SchemaInterface $schema, $overwrite = false) { $classMap = array(); $cTemplates = array(); $cTemplates[] = BaseModelClassFactory::create($schema, $this->getBaseModelClass()); $cTemplates[] = SchemaProxyClassFactory::create($schema); $cTemplates[] = BaseCollectionClassFactory::create($schema, $this->getBaseCollectionClass()); foreach ($cTemplates as $cTemplate) { if ($result = $this->updateClassFile($cTemplate, $schema, $overwrite)) { list($className, $classFile) = $result; $classMap[$className] = $classFile; } } if ($result = $this->generateCollectionClass($schema, false)) { list($className, $classFile) = $result; $classMap[$className] = $classFile; } if ($result = $this->generateModelClass($schema, false)) { list($className, $classFile) = $result; $classMap[$className] = $classFile; } return $classMap; }